随笔分类 -  LeetCode题解

整理思路确保自己理解
摘要:与上一道题及其相似 也没什么好办法 public int threeSumClosest1(int[] nums, int target) { Arrays.sort(nums); int len = nums.length; int sum = 0; int max = Integer.MAX_V 阅读全文
posted @ 2021-09-29 15:28 OTeam 阅读(34) 评论(0) 推荐(0)
摘要:这道题 解法是暴力的优化 想清楚 第一个数怎么求 然后第二 第三个数怎么求 为什么先排序呢 因为排序能有可能判断是否重复 简单的优化减少了一毫秒的运算时间 public List<List<Integer>> threedNums(int[] nums) { Arrays.sort(nums); / 阅读全文
posted @ 2021-09-28 11:52 OTeam 阅读(43) 评论(0) 推荐(0)
摘要:简单点暴力解法 public static String st(String [] str){ // 合理性校验 if (str.length==0||str==null)return ""; // 最长前缀 随便找一个就行 for (int i = 0; i < str[0].length(); 阅读全文
posted @ 2021-09-27 15:00 OTeam 阅读(44) 评论(0) 推荐(0)
摘要:这个简单我们遍历字符串挨个加就行了 特殊情况提前处理就行了 public int romanToInt(String s) { int sum=0; // 把特殊情况提前减掉 if(s.indexOf("IV")!=-1){sum-=2;} if(s.indexOf("IX")!=-1){sum-= 阅读全文
posted @ 2021-09-26 17:58 OTeam 阅读(46) 评论(0) 推荐(0)
摘要:半枚举法 public static String intToRoman1(int num) { // 数字枚举 只列举特殊的 int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; // 对应罗马字符 对应特殊数 阅读全文
posted @ 2021-09-26 17:11 OTeam 阅读(32) 评论(0) 推荐(0)
摘要:给定一个数组 让你求最多能装多少水 这题明确一点就行了 面积底是固定的 高会变化 水由最低的高决定的所以 我们让左右谁矮移动谁就行了 public static int maxArea(int[] height) { int maxArea = 0; int l = 0,r = height.len 阅读全文
posted @ 2021-09-24 17:01 OTeam 阅读(122) 评论(0) 推荐(0)
摘要:比对后半部与前半部就可以了 那我们有一个问题 如何求 他的位数 int length = (int) (Math.log(number) / Math.log(10) + 1); log的底数是固定的假设为a a经历多少次计算可以进位 Math.log(10) 然后a经历过多少次计算可以达到 num 阅读全文
posted @ 2021-09-24 15:21 OTeam 阅读(47) 评论(0) 推荐(0)
摘要:这题感觉难度不应该是中等 因为已经被简化了 即使没被简化也就是变更校验而已 首先我们先维护四个变量 int pop = 0;//尾数 boolean hasSign = false;// 是否开始转化 int ans = 0;// 结果 int sign = 1;//正负 然后我们再明确校验条 if 阅读全文
posted @ 2021-09-23 16:47 OTeam 阅读(49) 评论(0) 推荐(0)
摘要:这题开始我最初的想法是转字符串然后反转然后再转回去 感觉有点离谱就看了一眼大神答案果然比我的强啊 public int reverse1(int x){ long rev = 0; while (x!=0){ int pop = x%10; x/=10; rev = rev*10+pop; } if 阅读全文
posted @ 2021-09-23 14:42 OTeam 阅读(37) 评论(0) 推荐(0)
摘要:这道题的难点就是对周期的把握 我们只要找到周期的对应规律就行了 盗个图 这个图 要注意一点 是个五行图 不是四行 一个周期是八个点 所以周期和行的比例就是 int cycleLen = 2 * numRows -2; 除去第一行和最后一行外 别的行每个周期都是两行 也就是两个点 第一个点是 行号 第 阅读全文
posted @ 2021-09-23 10:48 OTeam 阅读(112) 评论(0) 推荐(0)
摘要:马拉车算法没那么复杂 只是想一次性读懂确实比较难 我们换个思路然后容易理解了 第一 进行字符串预处理 字符串经过预处理后就可以转为奇数串 至于那个$ 与 ^ 这在某大佬的博客里称为哨兵位看的太多记不住谁说的了 见谅 public static String preString(String s) { 阅读全文
posted @ 2021-09-22 16:41 OTeam 阅读(98) 评论(0) 推荐(0)
摘要:这里是暴力解法的优化 有两个条件 第一数组是正序 第二找到中位数 中位数有两种 一 种是 当数组长度合为 奇数情况 找出 len/2位置的数即可 数组长度为偶数的情况时 则需找到 (( len/2)+(len/2)-1)/2.0 注 用数组总长度为3 和4 代入一下就理解了 //开始解答 publi 阅读全文
posted @ 2021-08-27 13:17 OTeam 阅读(61) 评论(0) 推荐(0)
摘要:好了这道题的 示例和题解不是一回事 所以看了好久 才理解题解是什么意思 按照示例的显示题解 只有一种思路 判断 两组序列长度总和的奇偶性 如果为偶数就是求 len/2 与(len/2)-1 的均值 如果为奇数 是求 len/2 下标处的 值 只考虑解法的话 合并两个序列然后排序是最简单了 publi 阅读全文
posted @ 2021-08-26 10:26 OTeam 阅读(70) 评论(0) 推荐(0)
摘要:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度 这道题就是理清一个逻辑 (我也是看答案明白的会了就行) 遍历以及遍历操作是不同的 有了这个思想就容易理解了 //壳子 public int XXX(String s){ // 构建 非重复容器 虽然用不到 但是有一点 hash的查 阅读全文
posted @ 2021-08-24 18:21 OTeam 阅读(51) 评论(0) 推荐(0)
摘要:恢复内容开始 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 这道题的示例其实有点误导 题目说两个逆序链表 求和 阅读全文
posted @ 2021-08-23 23:27 OTeam 阅读(84) 评论(0) 推荐(0)
摘要:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 这道题的思路最开始就是暴力破解法 双重循环 阅读全文
posted @ 2021-08-23 14:57 OTeam 阅读(51) 评论(0) 推荐(0)