
leetcode
文章平均质量分 69
IC二舅
IC二舅致力于足不出户,也不用回村就可以把每一位ICer的精神内耗给治愈了!全平台认准“IC二舅”!
展开
-
动态规划05~不会吧,不会吧。还有人没把子序列和子串搞明白呀?
第一题:力扣300题解题思路:详见代码注释,写的很清楚呢!代码如下:class Solution { public int lengthOfLIS(int[] nums) { if(nums.length == 1) { return 1; } //初始化数组 int[] dp = new int[nums.length]; /* 为什么初始化全为1呢?因为dp[i]表示i原创 2022-03-09 20:45:29 · 108 阅读 · 0 评论 -
动态规划04~什么?不会吧?做算法题可以帮你炒股?真的不可思议
第一题:力扣198题解题思路:典型的动态规划问题,用模板就行,注意的是根据递推公式调整dp数组的初始化问题。具体详细过程参见代码注释。代码如下:class Solution { public int rob(int[] nums) { if(nums.length == 0) { return 0; } if(nums.length == 1) { return nums[0];原创 2022-03-06 16:06:48 · 348 阅读 · 0 评论 -
动态规划03---你的背包怎么背也背不烂~~~专治各种完全背包问题
完全背包的理论知识可以参考这个针对完全背包的问题,可以刷一下题目巩固一下知识!!!注意这一点::::::::::::::如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。还有一个就是,可不可以重复使用的问题,可以重复使用,内层正序遍历;不可以重复的话,内层反向遍历。第一题:力扣518题解题思路:具体思路可以参考上边那个链接,这里我打算总结题型,见到题型把相应的解决方案能说出来即可。这是一个典型的组合问题,无序!!!代码如原创 2022-03-05 14:39:05 · 287 阅读 · 0 评论 -
动态规划02---你的背包怎么背也背不烂~~~专治各种01背包问题
01背包的理论基础可以参考一下这个,真心觉得不错错看完上边这个之后,应该对背包问题有了一个初步的了解了,那接下来趁热打铁,看看下边这个01背包的简化,之后的题主要靠这个==============================================================================第一题:力扣416题解题思路:可以把数组之和的一半作为背包所能承受的最大重量,把数组中的每个数当作是要往书包中投放的物品,然后就先遍历每个物品,紧接着倒叙遍历背包。主要的还是递原创 2022-03-04 11:48:31 · 538 阅读 · 0 评论 -
贪心专题02
第一题:力扣135题解题思路:代码详解注释。代码如下:class Solution { //两次贪心 public int candy(int[] ratings) { //定义一个 糖果分发数组 int[] candyDistribute = new int[ratings.length]; //初始化数组为1 for(int i = 0; i < candyDistribute.length; i++) {原创 2022-03-02 17:00:01 · 236 阅读 · 0 评论 -
贪心专题01
第一题:力扣455题解题思路:使用贪心算法,只要满足局部最优解,最后就可以得到全局最优的解!从数组的后边往前边依次遍历,满足大饼干给胃口大的孩子吃,最后就是尽可能地满足所有孩子的需求!代码如下:class Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); Arrays.sort(s); int sIndex = s.length - 1;原创 2022-02-28 21:36:55 · 243 阅读 · 0 评论 -
二叉树专题03
第一题:力扣617题解题思路:参照这篇代码如下:class Solution { public TreeNode mergeTrees(TreeNode root1, TreeNode root2) { if(root1 == null) { return root2; } if(root2 == null) { return root1; } TreeNode r原创 2022-02-21 20:25:43 · 365 阅读 · 0 评论 -
二叉树专题02
第一题:力扣101题解题思路:有两种方式,递归和迭代,其实核心思想都是一样的,都是需要考虑外侧和内侧都相等的情况下,树才是对称的。详解看代码注释!代码如下:方式一:递归class Solution { public boolean isSymmetric(TreeNode root) { if(root == null) { return true; } return compare(root.left, root.r原创 2022-02-20 10:52:08 · 573 阅读 · 0 评论 -
二叉树专题01------树的基础知识,遍历方式、前序遍历、中序遍历和后序遍历、递归、迭代、DFS、BFS、层序遍历
二叉树基础知识可以看一下这里,就不列举了,有前人栽的树,我们就乘凉,感谢前辈们!!!第一题:二叉树的递归遍历力扣144题代码如下:class Solution { public List<Integer> preorderTraversal(TreeNode root) { //返回的结果 List<Integer> res = new ArrayList<>(); preOrder(root, res);原创 2022-02-17 19:17:38 · 439 阅读 · 0 评论 -
栈与队列力扣题目开刷
第一题:力扣232题解题思路:这与栈和队列的特性有关,众所周知,栈是满足“先进后出”的,而队列是满足“先进先出”的,所以聪明的人类就想到了用两个栈来实现队列,哈哈哈,聪明!!!代码如下:class MyQueue { Stack<Integer> stackIn; Stack<Integer> stackOut; //无参构造,初始化 public MyQueue() { stackIn = new Stack<>(原创 2022-02-10 23:21:59 · 5832 阅读 · 0 评论 -
集中刷双指针的题目
题目一:力扣27题题目二:力扣26题题目三:力扣283题题目四;力扣844题原创 2022-02-09 19:56:28 · 351 阅读 · 0 评论 -
回溯专题02
第一题:力扣46题解题思路:排序问题作为一个典型的回溯问题,其实和组合问题、回文字符串问题都有着密切的联系,只不过排序问题是有序的,这里在代码中给有详细注释。代码如下:class Solution { List<List<Integer>> res = new ArrayList<>(); LinkedList<Integer> path = new LinkedList<>(); public List&原创 2022-02-27 18:24:34 · 139 阅读 · 0 评论 -
回溯专题01
关于回溯的基础知识,点击这里,预习+复习第一题:力扣77题解题思路:我理解的回溯就是什么呢?就好像下棋一样,悔棋的那一步就叫做回溯。为什么组合问题适合使用回溯呢?组合就是每个元素的一个匹配,其实可以用k层for循环嵌套完成,但是1000层for循环你觉得现实吗?很明显不现实,那就用回溯。1~n,从左往右依次取,取过的就不再取了,把满足条件的边保存下来,放到集合中。代码如下:class Solution { List<List<Integer>> res = ne原创 2022-02-24 20:01:07 · 191 阅读 · 0 评论 -
动态规划01
第一题:力扣509题解题思路:根据题意,定义动态数组,初始化,递推公式,直接遍历就ok!!!代码如下:class Solution { public int fib(int n) { //动态规划典型题目 if(n <= 1) { return n; } //1. dp数组 int[] dp = new int[n + 1]; //3. 初始化 dp[原创 2022-03-03 16:30:38 · 6651 阅读 · 0 评论 -
力扣字符串专题
简单题我重拳出击,复杂题我唯唯诺诺!!!先来个力扣344题思路 :思路很简单,就是定义两个指针,前后依次交换数组中的元素,之后头指针++,尾指针- -,直到不满足循环条件退出循环代码如下:class Solution { public void reverseString(char[] s) { int i = 0, j = s.length - 1; while(i < j) { char temp = s[i]; .原创 2022-01-27 22:56:53 · 595 阅读 · 0 评论 -
数组专题~有人十八单手开法拉利,有人二十加在lc刷算法题
第一题:力扣977题解法一:暴力解法class Solution { public int[] sortedSquares(int[] nums) { //先计算 for(int i = 0; i < nums.length; i++) { nums[i] *= nums[i]; } //再排序 Arrays.sort(nums); return nums; }原创 2022-04-18 16:24:19 · 796 阅读 · 0 评论 -
day2: 链表专题(不断补充)
83.删除排序链表中的重复元素题目思想:首先需要判断头节点是否为空,若是,直接返回head;否则,下一步===》这样之后,头节点不可能被删除了,那么只有两种可能了。第一种:当前节点的值如果不等于下一个节点的值,那么太好了,不用删除节点,直接将指针后移到下一个节点;第二种:当前节点的值如果等于下一个节点的值,此时就需要将后一节点的值删除。重复这个过程。这里我写了两种,都可以,一种是指针只移动到最后一个节点,不移动至最后一个节点指向的null,代码如下:/** * Definition for si原创 2021-12-30 16:36:58 · 168 阅读 · 1 评论 -
哈希表专题~专治各种重复症状
杂症一:力扣242题解题思路:找不同的题,第一想法就是哈希表,包括数组、set、map。这里用数组就行。代码如下:class Solution { public boolean isAnagram(String s, String t) { //找不同第一想法就是哈希表,包括数组、set、map //因为s和t都是小写字母,定义一个大小为26的数组即可 int[] arr = new int[26]; //字符串转字符数组原创 2022-04-26 22:43:35 · 325 阅读 · 0 评论 -
手写链表~内含单向链表和双向链表,请大家放心食用
力扣707题单向链表public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}class MyLinkedList { int size; ListNode head; public MyLinkedList() { size = 0; head = new ListNode(0); }原创 2022-04-20 23:07:58 · 111 阅读 · 0 评论 -
关于力扣第 367题(有效的完全平方数)自己写的一种解法,求指正,谢谢
111原创 2021-12-28 16:21:01 · 242 阅读 · 0 评论