代码随想录刷题
文章平均质量分 83
尔等同学
这个作者很懒,什么都没留下…
展开
-
【随想录12】01背包练习
动态规划01背包练习01背包的题目:416. 分割等和子集1049. 最后一块石头的重量 II494. 目标和474. 一和零416. 分割等和子集类加所有数字为sum,如果sum为奇数返回false然后试着将所有数字分成两份,如果其中有一份能达到sum/2 ,返回true,否则为false。DFS, 暴力过不了所有的点 public static boolean canPart( int[] nums ) { int sum = 0; for原创 2022-03-08 17:13:14 · 604 阅读 · 0 评论 -
【随想录11】动态规划-01背包
背包问题/01背包背包问题泛指一类「给定价值与成本」,同时「限定决策规则」,在这样的条件下,如何实现价值最大化的问题【1】01背包「01背包」是指给定物品价值与体积(对应了「给定价值与成本」),在规定容量下(对应了「限定决策规则」)如何使得所选物品的总价值最大【1】01背包的题目:416. 分割等和子集1049. 最后一块石头的重量 II494. 目标和474. 一和零经典01背包给定两个长度都为N的数组weights和values,weights[i]和values[i]分别代表i原创 2022-03-02 23:23:31 · 508 阅读 · 0 评论 -
【随想录9 】回溯及模版(子集、排列问题)
模版// 结果集合 public List<List<Integer>> res = new ArrayList<>();// 路径集合 public LinkedList<Integer> path = new LinkedList<>(); public List<List<Integer>> model(int[] nums) { // 根据是否需要指定开始位置进行传参原创 2022-01-10 16:17:45 · 563 阅读 · 0 评论 -
【随想录8 】是否允许重复选择元素的组合问题
参考:代码随想录回溯算法组合问题待选组合无重复元素77. 组合216. 组合总和 III17. 电话号码的字母组合待选组合无重复元素,但可以多次选取同样的元素39. 组合总和待选组合有重复元素,且待选元素只可以被使用一次40. 组合总和 II组合问题一般是给定一个集合和特定要求,求有多少种子集合能符合特定要求。需要合理暴力才能在规定时间内完成算法,如果只是n个for循环再加时间不限,确实是可以满足要求,但咱作为有追求的coder是不允许自己写出那种代码的。待选组合无重复元素77.原创 2022-01-01 15:25:50 · 3970 阅读 · 0 评论 -
【随想录7 】nSum问题的重点是合理去重
参考 : 一个方法团灭 nSum 问题在一个数组中,给定targer,找到 n 个数使它们的和为target比如数组为 [-4,-4,-3,-2,-1,0,1,2,3,4,4]n = 2 时,target=0, 结果有 [-4,4] , [-3,3] …n = 3 时,target=0, 结果有 [-4,1,3] ,[-3,1,2]…n = 4 时,target=1,结果有 [-4,-2,3,4]…题目可以问有个种下标不同的组合方法,也可以问有多少种数组元素不同的组合方法1. 两数之和1原创 2021-12-26 17:04:55 · 922 阅读 · 0 评论 -
【随想录6-1】环形链表相关问题及其证明
试着解决如下问题如何证明环形链表有环?为什么双指针一定会在环内相遇?如果快指针一次走三步是否一定相遇?5步呢?n步呢?证明一下上一条为什么此题快慢指针中,快指针比慢指针仅多走一步?为什么这么设置?如何找到入环节点证明一下上面方法的正确性如何证明环形链表有环?leetcode 141 题自己搜为什么双指针一定会在环内相遇?来自代码随想录群友穿靴子的猫的解释假设快指针一次走x步,慢指针一次y步,相遇意味着二者路程差了n圈,一圈长度是C,则经过t时间,xt-yt=nC,n是快指针比慢原创 2021-12-25 15:39:32 · 814 阅读 · 0 评论 -
【随想录6 】环形链表与回文链表总结(带正确性证明)
个人认为链表这部分的算法相对简单,笔试中需要ac,面试需要能说明白为什么这么操作能保证其结果正确性就好了。链表问题考察的时间复杂度,空间复杂度稍不重要,笔试中为了过怎么都可以,面试一定要聊时间空间都最优的解法,141. 环形链表142. 环形链表 II234. 回文链表环形链表141. 环形链表法一,用set将每个节点装进去,如果下次遇到同样地址的节点,那就代表有环,如果直到遍历的指针都为空了,还没有遇到重复的节点,那就是没有环了。注意set装的是节点的地址不是节点的值,值可以重复,但是原创 2021-12-25 15:32:08 · 409 阅读 · 0 评论 -
【随想录5 】反转链表总结
本文学习与总结自递归反转链表的一部分题目主要是有三道反转链表的题目:206. 反转链表92. 反转链表 II25. K 个一组翻转链表实现反转链表非递归实现递归实现原创 2021-12-23 16:50:50 · 716 阅读 · 0 评论 -
【随想录4 】各种各样打印矩阵的方式
本文参考左老师算法课内容打印矩阵题比较常见的有以下几道:59. 螺旋矩阵 II54. 螺旋矩阵剑指 Offer 29. 顺时针打印矩阵48. 旋转图像之字形打印矩阵总体来说,做矩阵相关题目时,需要宏观看待整个变化过程。先多模拟几个用例找到其规律,再开始写代码59. 螺旋矩阵 II59. 螺旋矩阵 II将大矩阵可以看作由一圈圈小矩阵组成,只要逐层将矩阵内的数字填好,那么大矩阵也就填好了。对于每一圈小矩阵,可以将其分解为四个子矩阵,相当于矩形的四条边。 (x1,y1)->原创 2021-12-21 21:20:51 · 567 阅读 · 0 评论 -
【随想录3】滑动窗口总结 2
模版学习自labudong的算法模版 public boolean windowModle( String s1, String s2 ) { HashMap<Character, Integer> need = new HashMap<>(); HashMap<Character, Integer> window = new HashMap<>(); for ( int i = 0; i <原创 2021-12-21 21:04:08 · 670 阅读 · 0 评论 -
【随想录2】滑动窗口总结 1
滑动窗口相同知识点类型题见Github过例子 长度最小的子数组先用这一道题来过一下例子209. 长度最小的子数组想象一个管道,元素可以从头进入,可以从尾部出去。每一个元素进入后,我们都可以计算管道里面元素是否符合当前的要求如果符合,记录下当前的状态如果不符合,看是否需要将最先进入的元素取出。对于此题,所有元素均为正整数,新加入的元素总会让管道里元素之和保持不变或者变大,同时题目要求的是长度最小的字数组,所以在判断过程中需要记录管道内元素的个数。如果某时刻管道内元素大于target,需要原创 2021-12-17 19:35:41 · 1261 阅读 · 0 评论 -
【随想录1】寻找指定位置-二分法
寻找指定位置代码仓库704. 二分查找34. 在排序数组中查找元素的第一个和最后一个位置二分法二分法的难点在于其细节而不是其思想,所以学习过程中要明白其思想,知道所有细节,并能够用代码实现出来。二分法主要有两种写法left<=right public int search(int[] nums, int target) { int l=0; int r=nums.length-1; //因为left == right是有意义的,所以原创 2021-12-16 11:49:41 · 2411 阅读 · 0 评论