LeetCode刷题
每日刷题记录、分享解题思路
ATagebra
程序猿进化中
展开
-
链表|LeetCode203、707、206
移除链表中的元素,这里引入一个虚拟的头指针来统一操作。难度不大,主要是java基础不太好,自己写测试用例的时候耽误了很久。这里的判断,需要if else 本来写的时候没有带else,直接写的 cur=cur.next;是很基础且必须的题目。我写的太乱了,这里直接用网站上的代码做示例,有一个地方需要注意,就是链表中的size属性。常规思路:利用双指针,只需要将现有链表的指针方向全部反过来就行了。今天开始写链表的题目。链表的核心内容是需要了解它的一些基础是如何实现的,在此基础上做的延伸一般不会太复杂。原创 2023-10-29 17:13:49 · 168 阅读 · 0 评论 -
数组、双指针|LeetCode27、209、977、59
阅前声明:本人java基础不好,以后写的时候会加上一些java语法需要注意的地方,如果问题还请多多交流指正!数组第二部分主要是针对双指针思想展开的。设置两个指针,fast指针用来指向新数组的内容,slow用来指向新数组的index。通过对fast指向元素内容判断是否需要,进而移动slow来实现内容的更新。原创 2023-10-28 22:48:35 · 224 阅读 · 0 评论 -
数组、二分查找|LeetCode 704、35、34
报名了代码随想录的训练营,督促着学习总是好的,结果这两天因为生病给耽误了,昨天把前面两天的题目给写了一下,今天补一下博客。这种每天的训练营就适合我这种喜欢凑合的,没有这种再不干就干不完的紧迫感给我,我就能一直拖哈哈哈!前两天针对数组模块知识点做回顾,数组这块两个核心知识点就是二分查找跟双指针思想。数组第一部分针对二分查找,第二部分针对双指针。原创 2023-10-28 19:57:57 · 164 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--628. 三个数的最大乘积
题目描述给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入:nums = [1,2,3]输出:6示例 2:输入:nums = [1,2,3,4]输出:24示例 3:输入:nums = [-1,-2,-3]输出:-6提示:3 <= nums.length <= 104-1000 <= nums[i] <= 1000思路1、【超时】暴力求出成绩最大值 时间复杂度是o(n^3),提交后超时,换思路2、【正原创 2021-02-28 12:48:19 · 118 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--1720. 解码异或后的数组
题目描述未知 整数数组 arr 由 n 个非负整数组成。经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0])。请解码返回原数组 arr 。可以证明答案存在并且是唯一的。示例 1:输入:encoded = [1,2,3],原创 2021-02-26 11:43:04 · 197 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--1370. 上升下降字符串
题目描述给你一个字符串 s ,请你根据下面的算法重新构造字符串:从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字符串后面。重复步骤 5 ,直到你没法从 s 中选择字符。重复步骤 1 到 6 ,直原创 2021-02-25 17:26:43 · 113 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--1431. 拥有最多糖果的孩子
题目描述给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true] 解释:孩子 1 有 2 个糖果,原创 2021-02-24 14:05:15 · 140 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--面试题 01.09. 字符串轮转
题目描述字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1: 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True 示例2: 输入:s1 = "aa", s2 = "aba" 输出:False提示:字符串长度在[0, 100000]范围内。思路这道题开始的时候根本没看懂是怎么旋转的,看了题解之后说是,如果s2s2中包括了s1那么s2就原创 2021-02-23 19:38:26 · 236 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--面试题 02.01. 移除重复节点
题目描述编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。思路1、普通思路:设置两个指针用来遍历比较整个链表中的元素,例如first last,last用来遍历整个链表与first比较。若一样则删除last所指向的节点。2、优化思路:由于题原创 2021-02-23 19:05:26 · 135 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--面试题 02.02. 返回倒数第 k 个节点
题目描述实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的 k 保证是有效的。思路先正向统计一共有多少个节点,然后再正向找到该节点代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *ne原创 2021-02-23 17:58:30 · 116 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--面试题 02.03. 删除中间节点
题目描述实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f思路比较简单,与常规删除不一样的就是这题是保留要删除的节点,将后面一个结点的信息赋值给前面的这个节点以达到删除的效果。代码/** * Definition for singly-linked list. * s原创 2021-02-23 17:37:28 · 132 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--剑指 Offer 58 - II. 左旋转字符串 三种解题方法
题目字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1:输入: s = "abcdefg", k = 2输出: "cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出: "umghlrlose" 限制:1 <= k < s.length <= 10000常规思路原创 2021-02-22 22:57:05 · 120 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--leetcode.1480. 一维数组的动态和
题目描述:给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1原创 2021-02-22 12:12:12 · 98 阅读 · 0 评论 -
LeetCode--2周速刷--简单题--leetcode.1672. 最富有客户的资产总量
题目描述给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。示例 1:输入:accounts = [[1,2,3],[3,2,1]]输出:6解释:第 1 位客户的资产总量 = 1 + 2 + 3 = 6第 2 位客户的资产总量 = 3 + 2 + 1原创 2021-02-22 12:40:07 · 223 阅读 · 0 评论