LeetCode-Java(03)

news2024/10/6 2:24:16

9. 回文数

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int revertedNumber = 0;
        while (x > revertedNumber) {
            revertedNumber = revertedNumber * 10 + x % 10;
            x /= 10;
        }
        // 当长度为奇数时通过revertedNumber/10 去除处于中位的数字。
        return x == revertedNumber || x == revertedNumber / 10;
    }
}

11. 盛最多水的容器

双指针

class Solution {
    public int maxArea(int[] height) {
        int ans=0;
        // 首位指针
        int i=0,j=height.length-1;
        while(i<j){
            ans=Math.max(ans,(j-i)*Math.min(height[i],height[j]));
            if(height[i]>=height[j]) j--;
            else i++;
        }
        return ans;
    }
}

写到一起 时间快不少

class Solution {
    public int maxArea(int[] height) {
        int ans=0;
        int i=0,j=height.length-1;
        while(i<j){
            if(height[i]>=height[j]) 
            ans=Math.max(ans,(j-i)*height[j--]);
            else 
            ans=Math.max(ans,(j-i)*height[i++]);
        }
        return ans;
    }
}

12. Integer to Roman

class Solution {
    public String intToRoman(int num) {
        // 4、9、40、90、400、900 作为加法因子,它们在结果中只能出现一次。
        int[] nums = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
        String[] romans = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};

        StringBuilder stringBuilder = new StringBuilder();
        int index = 0;
        while (index < 13) {
            // 贪心策略
            while (num >= nums[index]) {
                stringBuilder.append(romans[index]);
                num -= nums[index];
            }
            index++;
        }

        return stringBuilder.toString();
    }
}

13. Roman to Integer

和前一道相反,直接累加字符的值

class Solution {
    public int romanToInt(String s) {
        // 4、9、40、90、400、900 作为加法因子,它们在结果中只能出现一次。
        // int[] nums = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
        // String[] romans = {"M", "f", "D", "e", "C", "d", "L", "c", "X", "b", "V", "a", "I"};
        s = s.replace("IV","a");
        s = s.replace("IX","b");
        s = s.replace("XL","c");
        s = s.replace("XC","d");
        s = s.replace("CD","e");
        s = s.replace("CM","f");
        int res = 0;
        for (int i=0; i<s.length(); i++) {
            res += which(s.charAt(i));
        }
        return res;
    }
 
  private int which(char ch) {
        switch(ch) {
            case 'I': return 1;
            case 'V': return 5;
            case 'X': return 10;
            case 'L': return 50;
            case 'C': return 100;
            case 'D': return 500;
            case 'M': return 1000;
            case 'a': return 4;
            case 'b': return 9;
            case 'c': return 40;
            case 'd': return 90;
            case 'e': return 400;
            case 'f': return 900;
        }
        return 0;
  }
}

优化一下

class Solution {
    public int romanToInt(String s) {
        int[] nums = new int[s.length()];
        int res = 0;
        for(int i = 0;i <s.length();i ++){
            nums[i] = trans(s.charAt(i));
        }
        for(int i = 0;i < s.length();i ++){
            // 前面的数字小于后面的数字,加上他们的差值 注意i最多取到倒数第二位 跳出执行下一个
            if(i != s.length() - 1 && nums[i] < nums[i + 1]){
                res += nums[i + 1] - nums[i];
                i ++;
                continue;
            }
            // 一直累加
            res += nums[i];
        }
        return res;
    }
    private int trans(char cur){
        switch(cur){
            case 'I': return 1;
            case 'V': return 5;
            case 'X': return 10;
            case 'L': return 50;
            case 'C': return 100;
            case 'D': return 500;
            case 'M': return 1000;
        }
        return 0;
    }
}

14. Longest Common Prefix

 每两个字符串进行比较

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs == null || strs.length == 0) {
            return "";
        }
        String prefix = strs[0];
        int count = strs.length;
        for (int i = 1; i < count; i++) {
            // 找两个字符串的公共最长前缀,两两比较,每次比较前面得出的最长前缀
            prefix = longestCommonPrefix(prefix, strs[i]);
            if (prefix.length() == 0) {
                break;
            }
        }
        return prefix;
    }

    public String longestCommonPrefix(String str1, String str2) {
        int length = Math.min(str1.length(), str2.length());
        int index = 0;
        while (index < length && str1.charAt(index) == str2.charAt(index)) {
            index++;
        }
        // substring 的参数索引 左闭右开
        return str1.substring(0, index);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/847045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

现代C++中的从头开始深度学习:【5/8】卷积

一、说明 在上一个故事中&#xff0c;我们介绍了机器学习的一些最相关的编码方面&#xff0c;例如 functional 规划、矢量化和线性代数规划。 现在&#xff0c;让我们通过使用 2D 卷积实现实际编码深度学习模型来开始我们的道路。让我们开始吧。 二、关于本系列 我们将学习如何…

【从零学习python 】04. Python编程基础:变量、数据类型与标识符

文章目录 变量以及数据类型一、变量的定义二、变量的类型三、查看数据类型 标识符和关键字标识符命名规则命名规范 关键字进阶案例 变量以及数据类型 一、变量的定义 对于重复使用&#xff0c;并且经常需要修改的数据&#xff0c;可以定义为变量&#xff0c;来提高编程效率。…

kubeasz在线安装K8S集群单master

1.基础系统配置 确保在干净的系统上开始安装&#xff0c;不能使用曾经装过kubeadm或其他k8s发行版的环境 系统是Ubuntu 或者CentOS 7 2.下载文件 2.1 下载工具脚本ezdown&#xff0c;举例使用kubeasz版本3.5.0 #此版本默认安装的是 K8S v1.26.0 export release3.5.0 wget h…

初遇C++之语法篇(完结)

&#x1f9c3;博客主页:阿博历练记 &#x1f4d6;文章专栏:c &#x1f68d;代码仓库:阿博编程日记 &#x1f361;欢迎关注:欢迎友友们点赞收藏关注哦&#x1f339; 文章目录 &#x1f36d;1.函数重载&#x1f4dc;1.1函数重载的概念&#x1f4e2;1.2函数重载三大误区&#x1f3…

Nacos单节点部署

&#x1f388; 作者&#xff1a;互联网-小啊宇 &#x1f388; 简介&#xff1a; CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作&#xff0c;擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

第十五章 定义 HL7 的 DTL 数据转换

文章目录 第十五章 定义 HL7 的 DTL 数据转换 第十五章 定义 HL7 的 DTL 数据转换 每个接口可能需要一定数量的数据转换。创建转换时&#xff0c;不要使用保留的包名称。 重要提示&#xff1a;请勿在数据转换中手动更改 HL7 转义序列&#xff1b;自动处理这些。 可以使用“数…

智能状态监测如何帮助设备管理团队转型升级?

制造业面临人才短缺和生产力提升的双重挑战。然而&#xff0c;全球市场对生产效率和产品质量的要求依然高企。这些挑战的核心在于&#xff0c;制造业需要在日益复杂的环境下&#xff0c;实时识别并应对生产过程中的异常情况&#xff0c;确保生产持续稳定。 一、传统状态监测的限…

Android 13 Hotseat定制化修改

一.背景 由于需求是需要自定义修改Hotseat,所以此篇文章是记录如何自定义修改hotseat的,应该可以覆盖大部分场景,修改点有修改hotseat布局方向,hotseat图标数量,hotseat图标大小,hotseat布局位置,hotseat图标禁止形成文件夹,hotseat图标禁止移动到Launcher中,下面开始…

深度学习中的优化算法

文章目录 前言一、优化和深度学习1.1 优化的目标1.2 深度学习中的优化挑战1.2.1 局部最小值1.2.2 鞍点1.2.3 梯度消失 二、梯度下降2.1 一维梯度下降2.1.1 学习率 2.2 多元梯度下降2.3 自适应方法2.3.1 牛顿法2.3.2 其他自适应方法 三、随机梯度下降3.1 随机梯度更新3.2 动态学…

JS逆向之顶像滑块

本教程仅限于学术探讨&#xff0c;也没有专门针对某个网站而编写&#xff0c;禁止用于非法用途、商业活动、恶意滥用技术等&#xff0c;否则后果自负。观看则同意此约定。如有侵权&#xff0c;请告知删除&#xff0c;谢谢&#xff01; 目录 一、接口请求流程 二、C1包 三、ac 四…

HTTP协议学习笔记1

初识HTTP 输入网址进入网页过程发生了什么&#xff1f; DNS解析&#xff1a;浏览器会向本地DNS服务器发出域名解析请求&#xff0c;如果本地DNS服务器中没有对应的IP地址&#xff0c;则会向上级DNS服务器继续发出请求&#xff0c;直到找到正确的IP地址为止。 建立TCP连接&…

关于Log日志

日志常用的如Logback&#xff0c;方便查看日志和打印的SQL&#xff08;或配合idea的一些mybaits日志插件&#xff09;&#xff0c;简单讲讲。 Logback等级 ALL < TRACE < DEBUG < INFO < WARN < ERROR <FATAL <OFF 配置文件结构 configuration appender…

微信小程序读取本地json

首先在项目录下新建【server】文件夹&#xff0c;新建data.js文件&#xff0c;并定义好json数据格式。如下&#xff1a; pages/index/index.ts导入data.js并请求json pages/index/index.wxml页面展示数据

365. 水壶问题

365. 水壶问题 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 365. 水壶问题 https://leetcode.cn/problems/water-and-jug-problem/description/ 完成情况&#xff1a; 解题思路&#xff1a; /**在任意一个时刻…

[Web_Unagi]xxe注入过滤绕过

文章目录 [Web_Unagi]xxe注入过滤绕过 [Web_Unagi]xxe注入过滤绕过 提示我们需要上传文件&#xff0c;并且flag在根目录下&#xff0c; 上传文件的格式为&#xff1a; <users><user><username>alice</username><password>passwd1</password…

封装上传文件组件(axios,进度条onUploadProgress,取消请求)

目录 定时模拟进度条 方法 A.axios B.xhr 取消请求​​​​​​​ 完整代码 A.自定义上传组件 B.二次封装组件 情况 增加cancelToken不生效&#xff0c;刷新页面 进度条太快->设置浏览器网速 定时模拟进度条 startUpload() {if (!this.file) return;const totalS…

【C++】bind包装器

bind包装器 调用bind的一般形式&#xff1a;auto newCallable bind(callable,arg_list); 其中&#xff0c;newCallable本身是一个可调用对象&#xff0c;arg_list是一个逗号分隔的参数列表&#xff0c;对应给定的 callable的参数。 当我们调用newCallable时&#xff0c;newCa…

【内网穿透】配置公网访问,实现远程连接到内网群晖NAS 6.X

公网远程访问内网群晖NAS 6.X【内网穿透】 文章目录 公网远程访问内网群晖NAS 6.X【内网穿透】前言1. 群晖NAS远程操作2. 创建一条“群晖SSH”隧道 &#x1f340;小结&#x1f340; &#x1f389;博客主页&#xff1a;小智_x0___0x_ &#x1f389;欢迎关注&#xff1a;&#x1…

虚拟ip地址软件哪个好 手机虚拟ip地址软件有哪些

虚拟ip地址修改器 IP转换器软件是一种用于把不同格式的IP地址转换为另一种格式的工具。下面是几种常见的深度IP转换器软件&#xff1a; 1. 深度IP转换器 深度IP转换器是一种收费的、简单易用的在线工具&#xff0c;可以将IPv4地址转换为16进制、2进制和10进制等格式。此外&am…

面向万物智联的应用框架的思考与探索

本文转载自 OpenHarmony TSC 官方微信公众号《峰会回顾第3期 | 面向万物智联的应用框架的思考与探索》 演讲嘉宾 | 余枝强 回顾整理 | 廖 涛 排版校对 | 李萍萍 嘉宾简介 余枝强&#xff0c;OpenHarmony技术指导委员会跨平台应用开发框架TSG负责人&#xff0c;华为终端软件部…