
LeetCode每日一刷
文章平均质量分 63
每日更新乐扣一题,分享并且记录!
明宇逸风
用最简单直接的方式将代码呈现!
展开
-
力扣每日一刷——DAY010---广度优先搜索 / 深度优先搜索(206. 反转链表&&21. 合并两个有序链表)
力扣每日一刷广度优先搜索 / 深度优先搜索题目一解题思路题目二解题思路广度优先搜索 / 深度优先搜索题目一反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。解题思路思路一:迭代迭代需要三个指针,pre,cur,nxt,分别按顺序指向三个节点三个指针的初始化:pre指向空节点,cur指向头结点head,nxt指向head.next因为head.next可能不存在,nxt在循环中定义,这样如果head为空就不会进入循环迭代过程nxt指向cur.nextcur原创 2021-10-28 19:25:54 · 488 阅读 · 0 评论 -
力扣每日一刷——DAY009---广度优先搜索 / 深度优先搜索(542. 01 矩阵&&994. 腐烂的橘子)
力扣每日一刷广度优先搜索 / 深度优先搜索题目一解题思路题目二解题思路广度优先搜索 / 深度优先搜索题目一01 矩阵给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。解题思路通过广度优先搜索,因为是矩阵,我们只需要判断上下左右是否为0即可。倘若其中一个不为0,则进行递归,让count递增,最后比大小,取最小值。不过class Solution { public i转载 2021-10-25 19:30:02 · 381 阅读 · 0 评论 -
力扣每日一刷——DAY008---广度优先搜索 / 深度优先搜索(617. 合并二叉树&&116. 填充每个节点的下一个右侧节点指针)
力扣每日一刷广度优先搜索 / 深度优先搜索题目一解题思路题目二解题思路进阶思路广度优先搜索 / 深度优先搜索题目一图像渲染给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点解题思路首先我们得要了解什么是树,二叉树。看给的例子思路可能会出现一个错误,就是二叉树的子树为空时,我们该如何去想办法添加进去。其原创 2021-10-21 12:26:55 · 374 阅读 · 0 评论 -
力扣每日一刷——DAY007---广度优先搜索 / 深度优先搜索(733. 图像渲染&&695. 岛屿的最大面积)
力扣每日一刷广度优先搜索 / 深度优先搜索题目一解题思路题目二解题思路广度优先搜索 / 深度优先搜索题目一图像渲染有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向原创 2021-10-14 18:08:14 · 230 阅读 · 0 评论 -
力扣每日一刷——DAY006---双指针(3. 无重复字符的最长子串)
力扣每日一刷双指针题目一解题思路进阶思路双指针题目一无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。解题思路通过暴力双指针,可以解决该问题。class Solution { public int lengthOfLongestSubstring(String s) { char[] chars=s.toCharArray();//字符串转换成数组 int flag;//flag用以标记是否有相同的字符原创 2021-10-03 16:26:03 · 198 阅读 · 0 评论 -
力扣每日一刷——DAY005---双指针(876. 链表的中间结点&&19. 删除链表的倒数第 N 个结点)
力扣每日一刷双指针题目一解题思路题目二解题思路双指针题目一链表的中间结点给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。解题思路拿到题目开始,可能会有些摸不清头脑,不是就是查中间位置然后输出,直接就头指针加尾指针然后除2取整就行。不过用这样的方法实在是太费内存了。倘若用count来计数,需要用for循环,最后输出还是要for循环。不如换个思路想,既然是中间,那设置两个指针,分别一个走一次,另一个每次走2格,到达末尾的时候,一次走一格原创 2021-09-30 12:16:28 · 176 阅读 · 0 评论 -
力扣每日一刷_DAY004---双指(344.反转字符串&&557.反转字符串中的单词 III)
力扣每日一刷双指针题目一解题思路题目二解题思路双指针题目一反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。解题思路依然是要求原地算法。通过提示空间复杂度为O(1)我们可以立马联想到,我们只需要用一个temp来存值即可解决该问题。class Solution { public void reverseString(char[] s) {原创 2021-09-28 19:13:34 · 139 阅读 · 0 评论 -
力扣每日一刷_DAY003---双指针(283.移动零&&167. 两数之和 II - 输入有序数组)
力扣每日一刷双指针题目一解题思路题目二解题思路双指针题目一283.移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。解题思路因为要求不允许创建格外的数组去存值,所以我们依然是运用两个变量去控制原数组的下标,在一个For循环内,同时将0个个数计算出来,并且将不为0的数前移。class Solution { public void moveZeroes(int[] nums) { int i=0;int j=0;原创 2021-09-27 12:48:39 · 249 阅读 · 0 评论 -
力扣每日一刷_DAY002---双指针(977. 有序数组的平方&&189. 旋转数组)
力扣每日一刷双指针题目一解题思路题目二解题思路进阶解法双指针题目一给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。解题思路注意题目先给的nums,是非递减排序,也就是递增排序。我们只需要去初始化一个新数组去存nums的平方,然后对nums[ ]的值进行大小判断,然后再赋值给新数组即可。因为是用JAVA去解决问题,我们没办法去创建指针,我们可以通过对下标控制来完成类似指针的功能。class Solution { publi原创 2021-09-24 18:52:21 · 171 阅读 · 0 评论 -
力扣每日一刷_DAY001---二分查找(704. 二分查找&&278. 第一个错误的版本&&35. 搜索插入位置)
力扣每日一刷两数之和题目解题思路两数之和题目给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。解题思路简单二分法直接解,注意存在int可能溢出的情况class Solution { public int search(int[] nums, int target) { int min = 0; int max = nums.lengt原创 2021-09-23 19:05:08 · 200 阅读 · 0 评论 -
力扣每日一刷_DAY001---两数之和
力扣每日一刷两数之和题目解题思路进阶思路两数之和题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解题思路在不考虑时间以及内存的条件下,通常首先想到的是暴力解法,即通过两个for循环,在内循环里面判断两数之和是否为目标值,或者目标值减去一个数是否与之后一个数相同。class Solution { public int[] twoSum(int[] nums, int target) {原创 2021-09-23 17:15:51 · 146 阅读 · 0 评论