随笔分类 -  算法

刷题力扣
摘要:https://blog.csdn.net/lpq374606827/article/details/93203927 当List转化为数组时,如果想转化为二维数组: List<int[]> res = new ArrayList<>(); res.toArray(new int[res.size( 阅读全文
posted @ 2021-09-12 14:26 弓呆的胖次 阅读(85) 评论(0) 推荐(0)
摘要:思路:我们需要维护当前每个链表没有被合并的元素的最前面一个,kk 个链表就最多有 kk 个满足这样条件的元素,每次在这些元素里面选取 val 属性最小的元素合并到答案中。在选取最小元素的时候,我们可以用优先队列来优化这个过程。 作者:LeetCode-Solution链接:https://leetc 阅读全文
posted @ 2021-09-07 15:14 弓呆的胖次 阅读(516) 评论(0) 推荐(0)
摘要:https://leetcode-cn.com/problems/path-sum-ii/solution/yi-pian-wen-zhang-jie-jue-suo-you-er-cha-oo63/ 阅读全文
posted @ 2021-08-25 14:34 弓呆的胖次 阅读(25) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/daocaokafei/article/details/117028198 阅读全文
posted @ 2021-05-31 14:27 弓呆的胖次 阅读(62) 评论(0) 推荐(0)
摘要:直接看代码吧 class Solution {//和上一个打家劫舍差不多,唯一的区别是第一个和最后一个房子不能同时抢,所以比较[1,n-1]个房子的最大值,与[2,n]个房子的最大值 public int rob(int[] nums) {//copyOfRange函数易忘,闭区间拷贝出一个新的数组 阅读全文
posted @ 2020-05-27 08:25 弓呆的胖次 阅读(179) 评论(0) 推荐(0)
摘要:思路: 首先,判断n是不是质数,只需要判断到n的平方根为止。 (2)质数的倍数一定不是质数。 class Solution {//求的是小于n的所有质数个数!!!! public int countPrimes(int n) {//如果到n的平方根为止n都找不到能整除自己的数,那么n一定是质数 bo 阅读全文
posted @ 2020-05-27 08:16 弓呆的胖次 阅读(195) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/xiaozuoliunian/p/7784008.html 阅读全文
posted @ 2020-05-27 08:06 弓呆的胖次 阅读(240) 评论(0) 推荐(0)
摘要:思路:滑动窗口法 受到 76 题 Minimum Window Substring 的启示,找一个范围使得其值满足某个条件,然后就会想到滑动窗口,也就是用双指针的方法。和这道题本质是一样的。 用双指针 left 和 right 表示一个窗口。 (1)ight 向右移增大窗口,直到窗口内的数字和大于等 阅读全文
posted @ 2020-05-26 08:57 弓呆的胖次 阅读(132) 评论(0) 推荐(0)
摘要:方法:使用“快慢指针”思想找出循环:“快指针”每次走两步,“慢指针”每次走一步,当二者相等时,即为一个循环周期。此时,判断是不是因为1引起的循环,是的话就是快乐数,否则不是快乐数。注意:此题不建议用集合记录每次的计算结果来判断是否进入循环,因为这个集合可能大到无法存储;另外,也不建议使用递归,同理, 阅读全文
posted @ 2020-05-26 08:21 弓呆的胖次 阅读(171) 评论(0) 推荐(0)
摘要:思路:直接排序,找中间元素就行 class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length/2]; } } 阅读全文
posted @ 2020-05-26 07:54 弓呆的胖次 阅读(133) 评论(0) 推荐(0)
摘要:作者:LeetCode链接:https://leetcode-cn.com/problems/number-of-islands/solution/dao-yu-shu-liang-by-leetcode/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出 阅读全文
posted @ 2020-05-25 09:08 弓呆的胖次 阅读(164) 评论(0) 推荐(0)
摘要:很简单,来个层次遍历,当遍历队列,遍历到刚开始遍历时,队列里最后一个数时(也就是遍历len-1次),得到的就是右视图的其中一个节点 /** * Definition for a binary tree node. * public class TreeNode { * int val; * Tree 阅读全文
posted @ 2020-05-25 08:44 弓呆的胖次 阅读(211) 评论(0) 推荐(0)
摘要:直接看代码吧 class Solution { public int rob(int[] nums) { if(nums.length==0) return 0; if(nums.length==1) return nums[0]; if(nums.length==2) { if(nums[0]>n 阅读全文
posted @ 2020-05-25 08:40 弓呆的胖次 阅读(114) 评论(0) 推荐(0)
摘要:方法一:直接遍历。从头到尾遍历,找最小值,时间复杂度o(n)。 class Solution { public int findMin(int[] nums) { int len=nums.length; int min=Integer.MAX_VALUE; for(int i=0;i<len;i+ 阅读全文
posted @ 2020-05-20 09:27 弓呆的胖次 阅读(158) 评论(0) 推荐(0)
摘要:思路:动态规划,假设当前最大值为imax,显然imax=Math.max(imax*nums[i],nums[i])。因为存在负数,那么会导致最大的变最小的,最小的变最大的。因此还需要维护当前最小值imin,imin = min(imin * nums[i], nums[i])当负数出现时则imax 阅读全文
posted @ 2020-05-20 08:38 弓呆的胖次 阅读(147) 评论(0) 推荐(0)
摘要:思路:首先,反转后字符串前后不能有空格,所以说,要用一个函数去掉字符串前后的空格trim(), 之后,用split()函数,把原字符串按照空格分隔,成为一个字符串数组 https://www.cnblogs.com/Berryxiong/p/6232373.html 知识补充 String的spli 阅读全文
posted @ 2020-05-15 16:48 弓呆的胖次 阅读(505) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/Berryxiong/p/6232373.html 阅读全文
posted @ 2020-05-15 16:29 弓呆的胖次 阅读(440) 评论(0) 推荐(0)
摘要:元素要么出现一次,要么出现多次,首先Arrays.sort()进行排序,之后直接遍历就行,假如当前元素等于下标加一的元素,i=i+3;假如不等于,直接返回当前元素。当指针i到了最后一位,这一位一定是结果(这里容易写错) class Solution { public int singleNumber 阅读全文
posted @ 2020-05-15 16:12 弓呆的胖次 阅读(197) 评论(0) 推荐(0)
摘要:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ 阅读全文
posted @ 2020-05-15 10:11 弓呆的胖次 阅读(174) 评论(0) 推荐(0)
摘要:思路,首先,用函数去掉除了大小字母,数字之外的东西,用“”代替。 此外,要全部转换成小写, 之后双指针一前一后遍历就行 class Solution { public boolean isPalindrome(String s) {//大小写转换,看笔记 if(s.length()==0||s==n 阅读全文
posted @ 2020-05-15 09:51 弓呆的胖次 阅读(348) 评论(0) 推荐(0)