![](https://img-blog.csdnimg.cn/20210704195910281.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode-Code
只是刷刷题
学习机器:
这个作者很懒,什么都没留下…
展开
-
leetcode-热题100之2.3.5.11.15 [Java]
题目2.2. 两数相加https://leetcode.cn/problems/add-two-numbers/ 想法:从头节点开始,对应位置相加,注意保存进位,累加到下一个节点;注意创建节点。代码:结果:题目3: 3. 无重复字符的最长子串https://leetcode.cn/problems/longest-substring-without-repeating-characters/想法:借助hashmap;遍历字符串,将字符存入hashmap,如果已存在,则判断当前len和i-j的大小比较;原创 2022-06-13 09:41:40 · 151 阅读 · 1 评论 -
leetcode-200.463.695.827 岛屿问题 [Java]
参考这个人讲的 感觉讲的蛮好力扣https://leetcode.cn/problems/number-of-islands/solution/dao-yu-lei-wen-ti-de-tong-yong-jie-fa-dfs-bian-li-/得到网格DFS的框架代码:题目200:200. 岛屿数量https://leetcode.cn/problems/number-of-islands/ 代码:结果:题目463:463. 岛屿的周长https://leetcode.cn/problems/原创 2022-06-12 10:27:55 · 244 阅读 · 0 评论 -
剑指offer 04.11.50. 查找算法(中等)
题目一:剑指 Offer 04. 二维数组中的查找https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/想法一:按行二分法想法二:暴力//法一:class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { for (int i = 0; i < matrix...原创 2022-02-07 16:42:26 · 645 阅读 · 0 评论 -
剑指offer 03.53Ⅰ.53Ⅱ. 查找算法(简单)
题目一:剑指 Offer 03. 数组中重复的数字https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/想法一:使用flag数组标记是否出现过想法二:考虑到数字只有0~n-1,所以遍历将每个数字交换到顺序位置,当交换途中位置上数字已经正确时则为重复值代码://法一class Solution { public int findRepeatNumber(int[] nums) {原创 2022-02-06 21:24:01 · 331 阅读 · 0 评论 -
leetcode-611 有效三角形的个数 [Java]
题目:611. 有效三角形的个数https://leetcode-cn.com/problems/valid-triangle-number/一:暴力 三重循环 值得思考的是,如果首先排序的话,有a<b<c,那么a+c>b和b+c>a必定成立,只需判断a+b>c是否成立即可。代码:class Solution { public int triangleNumber(int[] nums) { int n=num...原创 2022-04-23 09:07:00 · 407 阅读 · 0 评论 -
剑指offer 06.24.35. 链表
题目一:剑指 Offer 06. 从尾到头打印链表https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/想法: 将链表倒序放入数组中 再返回数组代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(in原创 2022-01-11 19:37:21 · 147 阅读 · 0 评论 -
剑指 Offer II 001. 整数除法
题目:想法:使用减法替代除法注意边界! 注意int的取值范围!!!代码:class Solution { public int divide(int a, int b) { boolean sign=true; int count=0; //计算int数值范围的最大 最小值 int max = (int)Math.pow(2,31); int min = -(int)Math.pow(2..原创 2021-12-14 19:55:01 · 843 阅读 · 0 评论 -
剑指 Offer 09.30. 栈
题目1:20. 有效的括号https://leetcode-cn.com/problems/valid-parentheses/代码:class Solution { public boolean isValid(String s) { char[] ch = s.toCharArray();//转为字符数组 Stack<Character> st=new Stack<Character>(); bool.原创 2021-12-17 12:10:47 · 75 阅读 · 0 评论 -
位运算 力扣题目一起练习
位运算基础知识摘选力扣题目136 、137、260 、645原创 2021-12-15 14:42:37 · 377 阅读 · 0 评论 -
剑指offer 07.16.33. 分治算法(中等)
分治法的设计思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治策略:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。07.题目:想法(图参考k神):先序遍历可以得到每次的根,中序遍历可以根据根节点将其划分为[左子树-根节点-右子树],通过计算依次...原创 2022-02-18 22:09:57 · 309 阅读 · 0 评论 -
剑指offer 20. 67. 字符串(中等)
20.题目:剑指 Offer 20. 表示数值的字符串想法:写两个函数判断字符串是否为整数/小数.在主函数中将字符串按e/E拆分为字符串数组,若长度为2(且最后一个字符不是e/E),则判断左侧是否为整数/小数,以及右侧是否为整数.否则应判断整体是否为整数/小数. 返回与结果即可.代码:class Solution { public boolean isNumber(String s) { boolean res = true; ...原创 2022-02-18 21:26:13 · 221 阅读 · 0 评论 -
剑指offer 29. 31. 模拟(中等)
29.题目:剑指 Offer 29. 顺时针打印矩阵https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/想法:从左上角开始模拟转圈打印.代码:class Solution { public int[] spiralOrder(int[][] matrix) { int i,j,k,a,b; int m=matrix.length; //行数 .原创 2022-02-18 21:09:05 · 65 阅读 · 0 评论 -
剑指offer 14Ⅰ.57Ⅱ.62. 数学(中等)
14Ⅰ.题目:剑指 Offer 14- I. 剪绳子https://leetcode-cn.com/problems/jian-sheng-zi-lcof/想法1:动态规划,每次选择剪掉j长度,然后剩下可以选择剪或者不剪,再求max代码1:class Solution { public int cuttingRope(int n) { // 下标2->n存储每个数的最大乘积 int[] dp = new int[n+1];原创 2022-02-17 23:44:36 · 260 阅读 · 0 评论 -
剑指offer 39.66. 数学(简单)
36.题目:剑指 Offer 39. 数组中出现次数超过一半的数字https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/想法1:用haspmap存储各个数字出现的次数,再遍历找到出现超过一半的 ->超时想法2:首先递增排序,从第二个开始遍历数组,若和前边相同则统计出现次数,超过一半时返回;若不一样则令cnt=0;想法3:排序后直接返回.代码:原创 2022-02-17 23:24:44 · 330 阅读 · 0 评论 -
剑指offer 15.65.56Ⅰ.56Ⅱ. 位运算(简单-中等)
结合另一篇位运算博文一起:位运算 力扣题目一起练习_敲代码的猫-CSDN博客位运算基础知识摘选力扣题目136 、137、260 、645https://blog.csdn.net/weixin_52373240/article/details/121941063?spm=1001.2014.3001.550115.题目:剑指 Offer 15. 二进制中1的个数https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/原创 2022-02-15 23:20:03 · 404 阅读 · 0 评论 -
剑指offer 64.68Ⅰ.68Ⅱ. 搜索与回溯算法(中等)
64.题目:剑指 Offer 64. 求1+2+…+nhttps://leetcode-cn.com/problems/qiu-12n-lcof/想法:使用递归.但是终止递归需要if,能不能不用if? -> 使用&&短路代码:class Solution { public int sumNums(int n) { //if终止递归(题目不让) if(n<=0) return 0; return n+原创 2022-02-15 23:09:15 · 405 阅读 · 0 评论 -
剑指offer 55Ⅰ.55Ⅱ. 搜索与回溯算法(中等)
55Ⅰ.题目:剑指 Offer 55 - I. 二叉树的深度https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x.原创 2022-02-15 22:52:41 · 151 阅读 · 0 评论 -
剑指offer 40.41. 排序(中等)
40.题目:剑指 Offer 40. 最小的k个数https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/想法:先排序,再返回.class Solution { public int[] getLeastNumbers(int[] arr, int k) { Arrays.sort(arr); int[] res = new int[k]; for(int i=0;i&l原创 2022-02-15 22:46:49 · 193 阅读 · 0 评论 -
剑指offer 45.61. 排序(简单)
45.题目:剑指 Offer 45. 把数组排成最小的数https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/想法:自定义排序.首先转换为字符串数组,然后通过快速排序排列字符串顺序.参考:力扣k神代码:class Solution { public String minNumber(int[] nums) { String[] strs = new St..原创 2022-02-15 22:38:21 · 254 阅读 · 0 评论 -
剑指offer 34.36.54. 搜索与回溯算法(中等)(DFS)
34.题目:剑指 Offer 34. 二叉树中和为某一值的路径原创 2022-02-13 22:09:27 · 144 阅读 · 0 评论 -
剑指offer 12.13. 搜索与回溯算法(中等)(DFS)
12.题目:剑指 Offer 12. 矩阵中的路径https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof/想法:从某点开始"走",上下左右都可以,但也有很多不可以,如 1.边界不可以 2.走过的不可以 3.和字符串不匹配的不可以 带着这种想法写了三层循环,但发现不好判断走过的,也不好记录何时走下一个(因为设定的上下左右都试试,但可能上就可以了,下左...原创 2022-02-12 17:03:52 · 422 阅读 · 0 评论 -
剑指offer 21.57.58Ⅰ. 双指针(简单)
27.题目:剑指 Offer 21. 调整数组顺序使奇数位于偶数前面想法:双指针分别从头尾判断两数的奇偶,往中间移动或交换class Solution { public int[] exchange(int[] nums) { int i=0; int j=nums.length-1; while(i<j){ if((nums[i]&1)==0 && (nums[j]&.原创 2022-02-12 16:37:39 · 443 阅读 · 0 评论 -
剑指offer 18.22.25.52. 双指针(简单)
18.题目:剑指 Offer 18. 删除链表的节点想法:单链表删除特定值的节点,没有使用pre指针/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode de..原创 2022-02-11 10:59:33 · 160 阅读 · 0 评论 -
剑指offer 10Ⅰ.10Ⅱ.63 动态规划(简单)
10.Ⅰ题目:剑指 Offer 10- I. 斐波那契数列想法:F(N) = F(N - 1) + F(N - 2),递归时间复杂度太高,使用动态规划,移动ab.代码:class Solution { public int fib(int n) { int a = 0, b = 1, sum; for(int i = 0; i < n; i++){ sum = (a + b) % 1000000007;..原创 2022-02-10 21:42:23 · 164 阅读 · 0 评论 -
剑指offer 42.47.46.48 动态规划(中等)
总是对"动态规划"一知半解,这次,希望可以弄懂,想去知乎搜一些通俗的解释.(20 封私信 / 80 条消息) 如何理解动态规划? - 知乎 (zhihu.com)https://www.zhihu.com/question/39948290/answer/883302989这个讲得挺浅显,我这学龄前儿童能get到. 然后就开始做题了.42.题目剑指 Offer 42. 连续子数组的最大和https://leetcode-cn.com/problems/lian-xu-zi-shu原创 2022-02-10 21:29:04 · 322 阅读 · 0 评论 -
剑指offer 26.27.28 搜索与回溯算法(简单) 二叉树的DFS
26.题目:剑指 Offer 26. 树的子结构https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/想法:首先在A中查找B的根节点,若找到则从此时起对比AB,否则返回false. 注意B==null时,不是任何树的子结构,可优先判断.涉及两个递归:递归一findBsRoot函数作用? 在A中查找B的根节点 输入:TreeNodeA,TreeNodeB 返回值:无 递归的终止条件? A...原创 2022-02-08 11:11:41 · 473 阅读 · 0 评论 -
剑指offer 32Ⅰ.32Ⅱ.32Ⅲ 搜索与回溯算法(简单) 二叉树的BFS
Ⅰ面试题32 - I. 从上到下打印二叉树https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/想法:二叉树的层次遍历,借助队列实现,首先将二叉树的头节点放入,再从队列中依次取出节点,若该节点有左右孩子,再将其依次入队.代码:/** * Definition for a binary tree node. * public class TreeNode { * int val;原创 2022-02-08 09:16:06 · 182 阅读 · 0 评论 -
leetcode-1 两数之和 [Java]
题目:想法:双重循环代码:class Solution { public int[] twoSum(int[] nums, int target) { int[] two =new int[2]; int i,j; for(i=0;i<nums.length;i++){ for(j=i+1;j<nums.length;j++){ if(nums[i]+nums[.原创 2021-12-14 21:24:02 · 516 阅读 · 0 评论 -
leetcode-125 回文串的定义 [Java]
类别:字符串回文串的定义题目:想法:两端遍历,具体见注释。代码:class Solution { public boolean isPalindrome(String s) { s=s.replace(" ","").toLowerCase();//删除空格并转为小写 int len = s.length(); int i,j; char[] ch = new char[len]; ch =..原创 2021-11-29 18:50:49 · 132 阅读 · 0 评论 -
leetcode-520 检测大写字母 [Java]
类别:字符串字符题目:想法:把字符串转为字符数组,统计大写字母的个数;判断全大写或全小写或一个大写字母位于首位时返回true,否则返回false。代码:class Solution { public boolean detectCapitalUse(String word) { int n=word.length(); char[] letter = new char[n]; letter = word.toCharArray();.原创 2021-11-28 10:01:50 · 140 阅读 · 0 评论 -
leetcode-238 除自身以外数组的乘积 [Java]
题目:想法:用两个数组head、tail存储一个位置前/后的所有数字的乘积,head和tail再按位相乘得到最终输出矩阵。代码:class Solution { public int[] productExceptSelf(int[] nums) { int n = nums.length; int[] head = new int[n]; int[] tail = new int[n]; int i;原创 2021-11-23 19:26:00 · 336 阅读 · 0 评论 -
leetcode-304 二维区域和检索 - 矩阵不可变 [Java]
题目:想法一:代码:class NumMatrix { int[][] sums; public NumMatrix(int[][] matrix) { int m = matrix.length; int n = matrix[0].length; sums = new int[m][n]; int i,j,a,b; for(i=0;i<m;i++){ fo原创 2021-11-23 13:55:50 · 222 阅读 · 0 评论 -
leetcode-303 区域和检索 - 数组不可变 [Java]
类别:题目:法一:直接计算代码:class NumArray { int[] nums; public NumArray(int[] nums) { this.nums=nums; } public int sumRange(int left, int right) { int sum = 0; for (int i = left; i <= right; i++) {原创 2021-11-22 15:23:09 · 222 阅读 · 0 评论 -
leetcode-289 生命游戏 [Java]
题目:想法:一个活细胞影响周围8个细胞,遍历矩阵,遇到活细胞则给周围8个细胞都+10。再次遍历矩阵,更新所有细胞状态。十位数是周围活细胞数目,个位数是细胞的原始状态。代码:class Solution { public void gameOfLife(int[][] board) { int m=board.length; int n=board[0].length; int i,j,a,b; /.原创 2021-11-22 10:38:37 · 2634 阅读 · 0 评论 -
leetcode-73 矩阵置零 [Java]
题目:想法:代码:原创 2021-11-21 21:32:17 · 377 阅读 · 0 评论 -
leetcode-48 旋转图像 [Java]
题目:法一:想法:借助temp,原地旋转,注意开始终止条件,以及下标变化代码:class Solution { public void rotate(int[][] matrix) { int n=matrix[0].length; int top,down,i,j,tempA,tempB,a,b; top=0; down=n-1; while(top<down){ .原创 2021-09-29 16:15:56 · 52 阅读 · 0 评论 -
leetcode-566 重塑矩阵 [Java]
题目:法一:想法:存到一维数组里,再导入新二维数组代码:class Solution { public int[][] matrixReshape(int[][] mat, int r, int c) { int[][] newmat= new int[r][c]; int m = mat.length; int n = mat[0].length; if(m*n != r*c){ re原创 2021-09-27 17:18:33 · 65 阅读 · 0 评论 -
leetcode-498 对角线遍历 [Java]
题目:想法:按照题目要求遍历即可,注意斜向上移动时有到顶侧和到右侧之分。代码:class Solution { public int[] findDiagonalOrder(int[][] mat) { int i,j; int m=mat.length; //行数 int n=mat[0].length; //列数 int sum=m*n; //元素总数 int[] list = new ..原创 2021-09-22 16:00:20 · 137 阅读 · 0 评论 -
leetcode-59 螺旋矩阵Ⅱ [Java]
题目:想法:按着这个箭头写遍历代码就行了,把数字cnt一个个放进去,思路要清晰。代码:class Solution { public int[][] generateMatrix(int n) { int[][] matrix = new int[n][n]; int i,j,a,b; int m=n; //n行n列 i=0; j=0; //循环变量 a=1; //i上方中止条件原创 2021-09-20 15:28:49 · 78 阅读 · 0 评论 -
leetcode-54 螺旋矩阵 [Java]
题目:想法:按着这个箭头写遍历代码就行了,思路要清晰,记得考虑大正方形。代码:class Solution { public List<Integer> spiralOrder(int[][] matrix) { int i,j,a,b; int m=matrix.length; //行数 int n=matrix[0].length; //列数 List<Integer> list =原创 2021-09-15 15:21:25 · 61 阅读 · 0 评论