![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leecode
zwqqqqqqqqqq
这个作者很懒,什么都没留下…
展开
-
leecode第12天,动态规划之爬楼梯,打家劫舍,三角形最小路径和
第一题爬楼梯,个人感觉很像高中写的那种证明题,找到通用公式再确定几个初始值,然后就入循环就好了,感觉属于想得出来公式就做得出来,想不出来就想不出来的那种,唉直接看代码?class Solution { public int climbStairs(int n) { int p = 0; int q = 0; int r = 1; for(int i =0;i<n;i++){ p = q; ..原创 2021-11-26 17:04:09 · 273 阅读 · 0 评论 -
leecode第11天,回溯算法之组合,全排列,字母大小写全排列
第11天,十分痛苦,回溯前期理解太苦涩了,而且程序怎么运行的是比较不懂的,回去吃完饭拉上小钟两个人看了两个小时,打了无数断点想看明白怎么计算出结果的,还好理解了现在。关键点在于递归后需要回溯状态!!!先看第一题组合class Solution { public List<List<Integer>> combine(int n, int k) { //存放最终返回结果 List<List<Integer>> a原创 2021-11-23 16:52:06 · 3274 阅读 · 0 评论 -
Leecode第十天 递归/回溯之合并两个有序链表,反转链表
第十天两个简单递归,第一题class Solution {//每次输入两个节点,对比大小,并且选择下一个next节点,进行递归 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1 == null){ return l2; }else if(l2 == null){ return l1; }else if (l1.val &原创 2021-11-23 16:14:33 · 344 阅读 · 0 评论 -
Leecode第九天,广度优先搜索之矩阵,腐烂的橘子
第九天,两个广度优先搜索的算法题,先来看第一个乍一看没有头绪,那我们先简化一下题目,假如只有一个0,那问题是不是很简单,以唯一的0作为中心做广度优先搜索,设个变量depth,每搜索一层,depth+1。简单解决。那么现在有多个0,好了,有点复杂,但是换一下思维,把多个0看成“超级0”辐射而来的就轻松解决了,现在题目变成这样:有一个超级0,其他都是1,算出每个1到超级0的距离。但是超级0做广度优先搜索的第一层辐射创造出了多个0,逻辑关系不需要写,现在需要笔者继续完成剩下的广度优先搜索。好的,太简单了.原创 2021-11-23 15:51:03 · 399 阅读 · 0 评论 -
剑指第一天-栈与队列之两个栈实现队列,包含min函数的栈
先熟悉栈的基本知识:先进后出栈的实例化:Stack<Integer> stack = new Stack<>();栈的基本方法:object empty() 测试堆栈是否为空。Object peek( ) 查看堆栈顶部的对象,但不从堆栈中移除它。Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象Object push(Object element) 进栈。...原创 2021-11-18 17:45:18 · 265 阅读 · 0 评论 -
刷Leecode第8天,深度/广度优先搜索之树的遍历-合并二叉树,填充每个节点的下一个右侧节点
合并二叉树/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode rig原创 2021-11-18 16:25:14 · 180 阅读 · 0 评论 -
刷Leecode第7天,深度优先算法-图像渲染,岛屿最大面积
图像渲染代码和注释如下class Solution { //用来上下左右遍历 int[] dx = {1, 0, 0, -1}; int[] dy = {0, 1, -1, 0}; public int[][] floodFill(int[][] image, int sr, int sc, int newColor) { //拿到目标位置的颜色 int currColor = image[sr][sc]; //比较目标原创 2021-11-18 15:59:50 · 3718 阅读 · 0 评论 -
刷Leecode第6天,滑动窗口之无重复字符的最长字串和字符串 的排列
滑动窗口算法的使用需要搭配哈希表的键-值存放属性相结合,本身存在难度。来看看第一题:无重复字符的最长字串思路: int ans 为当前无重复字符串最大长度。新建哈希表,key存放字符串的单个字符char,value存放当前char所在字符串中的位置,一开始,left和right都在0处,即字符串开始处,right右移,将扫描到的字符存储在哈希表中,同时做判断,如果是新字符则不断移动,ans更新。如果里面有已经有重复的key了,则left移动至上个重复Key对应value后一位处,ans更新。不.原创 2021-11-16 16:14:02 · 632 阅读 · 0 评论 -
刷Leecode第5天,链表中的双指针-1.链表的中间节点,2.删除倒数第N个节点
今天之前没接触过链表的相关知识,先是恶补了一下。建议和我经历一样的伙伴也先看看链表的基本概念。第一题:返回链表的中间节点思路有很多:1,遍历两次,第一次获取总长度,第二次返回中间节点。2,双指针之快慢指针,快指针一次两步,慢指针一步,快指针到头时,慢指针所在节点就是中间节点,返回出去就行。快慢指针代码class Solution { public ListNode middleNode(ListNode head) { ListNode slow = head, f原创 2021-11-16 10:30:26 · 481 阅读 · 0 评论 -
leecode第四天,双指针-反转字符串和反转字符串中的单词
闲话不说先看第一题-反转字符串题目很简单,只要设定双指针交换就行,直接上代码class Solution { public void reverseString(char[] s) { int n =s.length; int left = 0; int right = n-1; while(left < right){ char middle = s[right]; s原创 2021-11-15 16:59:17 · 538 阅读 · 0 评论 -
leecode第三天,双指针-移动零、两数之和
过了一个周末,回来继续leecode之旅。今天两道题目:移动零,两数之和。先来第一题:移动零简单明了,将数组中的0全部右移,不改变数组长度和其余数字的顺序。思路有两个:“交换”和“覆盖”。我用的覆盖,详细思路:设定两个指针 i 和 j ,初始都是0. i指针不断右移,区分指向元素是否是0,如果不是0,j指针指向元素=i指针指向元素,并且同时右移。如果是0;j指针不动,i指针右移,到最后,数组里有多少个空就用多少个0 覆盖。代码public void moveZeroes(int[] nu.原创 2021-11-15 16:36:28 · 514 阅读 · 0 评论 -
刷leecode第二天,有序数组的平方和轮转数组。
第二天的题目一共两题。有序数组的平方和轮转数组。先看中等难度的第二题:乱转数组。看到题目,首先我的想法是先处理K,因为当K是数组长度n的整数倍时,数组就相当于没动,所以先得到真正移动值m=k%n.然后我的想法是新建一个数组result来根据移动规律赋值,接下来就是找规律啦,思路肯定是要进循环,通过这种循环,每一次循环处理一个result元素,先假设数组无限长,i + k就是第i个元素移动后的位置,但是当这个值大于数组长度时,就该减去n。所以得到。完整代码public class one {原创 2021-11-12 11:08:59 · 3961 阅读 · 0 评论 -
刷leecode的第一天(二分法)
为了提升自己,今天实习下班了之后回家刷起了leecode,由于之前没有经验,所以索性从算法入门开始刷起吧。第一天三个题都是关于二分法查找的,第一个是正儿八经的二分法查询,第二个查找哪个是第一个错误的版本,第三个是在第一个的基础上加一个“如果没找到目标数字,那就返回合适的插值位置”。第一个和第三个大同小异,自己写了个版本也过了,下面是第三题的class Solution { public int searchInsert(int[] nums, int target) {原创 2021-11-11 23:38:38 · 201 阅读 · 0 评论