
力扣leetcode算法与数据结构刷题
力扣leetcode,算法与数据结构刷题,python or C++ 加上讲解
强化学习曾小健
"强化学习曾小健2、强化学习曾小健3、我是机器人曾小健具身"都是该号副号。CSDN全站80强博客、总近480w+浏览。AI生成式技术,计算机博士;llama3、Baichuan2、Qwen、GLM-4等等项目贡献人(ArtificialZeng)。这个博客的主题主要是强化学习技术、AI生成式技术、大模型多模态技术、机器人具身智能控制技术、机器/深度学习论文或科研前沿、GNN图神经网络、神经网络,包括人工神经网络和生物神经网络,及其大脑演化,智能和认知的产生,通用人工智能;
展开
-
合并两个有序链表
这段代码的关键在于递归地比较两个链表当前节点的值,并根据这些值的比较结果构建新的排序链表。它并没有直接比较两个链表的大小,而是逐个节点进行比较。每次递归调用都解决了链表中的一个节点,直到到达一个链表的末尾,此时剩余的链表可以直接附加到合并后的链表上,因为它已经是排序好的。)成为一个新的、同样排序好的链表。代码中并没有直接比较两个链表的大小,而是比较链表中的当前节点的值。新链表是通过拼接给定的两个链表的所有节点组成的。这段代码的目的是合并两个排序好的链表(将两个升序链表合并为一个新的。合并链表的下一个节点。原创 2024-01-16 03:59:09 · 438 阅读 · 0 评论 -
26 删除链表中的重复元素Remove Duplicates from Sorted Array
删除所有重复的元素,使每个元素只出现一次。给定一个已排序的链表的头。原创 2024-01-14 06:20:00 · 440 阅读 · 0 评论 -
力扣官方最频繁面试题-中级 合集
原创 2023-10-22 23:59:14 · 124 阅读 · 0 评论 -
力扣简单-官方刷题顺序,最简代码(大多数只有一两行)合集
【代码】力扣简单-官方刷题顺序,最简代码(大多数只有一两行)合集。原创 2023-10-22 17:27:13 · 102 阅读 · 0 评论 -
力扣中级 矩阵置零
以上就是代码的逐行解释。简而言之,这个代码首先确定了哪些行和列应该被设置为0,然后实际执行了设置为0的操作。,将对应的行设置为全0。这里使用了Python列表的乘法特性。使用两个嵌套循环遍历矩阵中的每一个元素。,用于存储需要设置为0的行和列的索引。如果当前元素为0,则将当前元素的行索引。其所在行和列的所有元素都设为。的矩阵,如果一个元素为。,使用嵌套循环遍历每一行。检查当前元素是否为0。原创 2023-09-25 22:35:34 · 81 阅读 · 0 评论 -
快速排序的原理
首先我们需要在数列中选择一个基准数,我们一般会选择中间的一个数或者头尾的数,这里直接选择第 1 个数 47 作为基准数,接着把比 47 小的数字移动到左边,把比 47 大的数字移动到右边,对于相等的数字不做移动。以 47、29、71、99、78、19、24、47 的待排序的数列为例进行排序,为了方便区分两个 47,我们对后面的 47 增加一个下画线,即待排序的数列为 47、29、71、99、78、19、24、,进行第 1 趟第 1 个交换的排序情况如下,第 1 次的操作情况如。待排序的数列中小于基准数的。原创 2023-08-13 17:55:24 · 236 阅读 · 0 评论 -
力扣链表 简单 专栏 1删除链表中的节点 5回文链表(更新中)
此外,Python 的链表操作通常更简单、更直观,而 C++ 的链表操作则更灵活、更强大,但也更容易出错。在 C++ 中,你需要手动管理内存,这意味着当你删除一个节点时,你需要手动释放它的内存,否则可能会导致内存泄漏。在这种情况下,每个节点都是一个对象,数据和指针都存储在对象的属性中。链表是一种常见的数据结构,它由一系列的节点组成,每个节点都包含数据和指向下一个节点的指针。在单向链表中,每个节点都有一个指向下一个节点的指针,而在双向链表中,每个节点都有两个指针,一个指向前一个节点,一个指向后一个节点。原创 2023-07-19 08:02:19 · 358 阅读 · 0 评论 -
字符串5 easy 验证回文串 Valid Palindrom valid Anagram字母异位词
这是因为我们需要遍历整个字符串一次来提取所有的字母和数字,并再次遍历整个字符串来比较原始的字符串和逆序的字符串。这个解决方案的基本思路是首先将输入的字符串中所有的字母和数字提取出来,并将所有字符转换为小写。中的每个字符,如果它是字母或数字,就将它转换为小写(如果它是大写字母的话),然后将所有这些字符连接起来,生成一个新的字符串。来生成字符串的逆序,然后比较原始的字符串和逆序的字符串是否相同。中的字母和数字,并且所有的大写字母都被转换为小写。函数将这个列表中的所有字符连接成一个新的字符串。原创 2023-06-25 23:59:38 · 111 阅读 · 0 评论 -
字符串 合集 逐行解释版力扣:Easy String 3字符串中的第一个唯一字符、4 - 有效的字母异位词
循环是为了检查 count 列表是否全部为 0,如果有非 0 的元素,说明 s 和 t 不是变位词,返回 False。在完成所有字符的计数操作后,如果 s 和 t 是变位词,那么 count 列表应该恢复到全部为 0 的状态。这一行先判断两个字符串的长度是否相等,如果长度不相等,它们就不能是变位词,因此直接返回 False。循环中,针对字符串 s 和 t 的每个字符,分别增加和减少在 count 列表中对应的计数。是为了将 'a'-'z' 这 26 个字母映射到列表的 0-25 的索引上。原创 2023-06-21 07:33:01 · 205 阅读 · 0 评论 -
逐行解释版力扣合集 String Easy 1-5 reverse string - First uniq char 深拷贝浅拷贝
是一个字符串,原始字符串并不会改变,因为字符串在Python中是不可变的。这种做法会返回一个新的反转的字符串,因为这个赋值操作。是一个使用了Python的切片(slice)功能的语句。这是Python的列表或字符串反转代码。是 -1,表示从后向前取,也就是反向。是切片结束位置(不包括该位置上的元素),设置为它自己的反转版本。是一个列表,这会改变原列表的顺序。实际上创建了一个新的字符串。是一个列表或字符串。原创 2023-06-18 21:46:04 · 356 阅读 · 0 评论 -
Easy String 3 First Uniq character 逐行解释版本力扣
是类的一个实例,Python会自动传递它。在类的方法中,你会经常看到它。中第一个出现且仅出现一次的字符的索引。如果没有这样的字符,返回。的方法,该方法旨在找到给定字符串中的第一个唯一字符。这是一个Python类,其中定义了一个名为。总的来说,这段代码会查找并返回在输入字符串。如果上述条件为真,方法将返回该字符的索引。将结果以字典的形式返回,赋值给变量。中没有找到唯一的字符,方法将返回。如果是,说明这个字符在字符串。中的每个字符及其索引。当前字符的索引(赋值给。,并返回一个整数值。中每个字符出现的次数。原创 2023-06-17 21:46:36 · 605 阅读 · 0 评论 -
Array & string 中级 3,字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有。原创 2022-10-23 01:29:20 · 189 阅读 · 0 评论 -
递归与迭代
我们在此可以想象,我们从幼儿园到大学的学习知识过程类似于迭代,从一年级的卷子,做到高年级的卷子。高年级的卷子的基础知识是来自于稍低年级的学习。进入了更高年级,证明完成了前次的'迭代'状态累积。,从字面可以其理解为重复“递推”和“回归”的过程,当“递推”到达底部时就会开始“回归”,其过程相当于树的深度优先遍历。,从初始状态开始,每次迭代都遍历这个环,并更新状态,多次迭代直到到达结束状态。人生如环,不断迭代,这里我们循环调用‘做卷子’方法,不断迭代我们自身的年级。原创 2022-09-05 08:38:09 · 210 阅读 · 0 评论 -
leetcode中级2,Sorting and Searching:347. 前 K 个高频元素
【代码】leetcode中级2,Sorting and Searching:347. 前 K 个高频元素。原创 2022-09-05 07:49:07 · 152 阅读 · 0 评论 -
Count and Say 数字和字符串8 外观数列
countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211"「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21"描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11"描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个。原创 2022-09-04 12:22:08 · 134 阅读 · 0 评论 -
中级Sorting and Searching:Sort Colors
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。原创 2022-09-03 21:55:03 · 127 阅读 · 0 评论 -
回溯4 子集 leetcode
【代码】回溯4 子集 leetcode。原创 2022-09-01 08:55:18 · 103 阅读 · 0 评论 -
中级 回溯2 括号生成
【代码】中级 回溯2 括号生成。原创 2022-08-31 23:03:40 · 111 阅读 · 0 评论 -
中等array and sorting :count and say
【代码】中等array and sorting :count and say。原创 2022-08-25 21:55:21 · 122 阅读 · 0 评论 -
中级 array and sorting 334. 递增的三元子序列
【代码】中级 array and sorting 334. 递增的三元子序列。原创 2022-08-24 23:15:20 · 154 阅读 · 0 评论 -
中级 array and sorting 3. 无重复字符的最长子串 python C++
【代码】中级 array and sorting 3. 无重复字符的最长子串 python C++原创 2022-08-24 22:56:57 · 163 阅读 · 0 评论 -
动态规划 爬楼梯
代码】动态规划爬楼梯。原创 2022-07-25 23:15:07 · 151 阅读 · 0 评论 -
简单sorting and searching 合并+第一个错误版本 二分查找法
代码】sortingandsearching二分查找法。原创 2022-07-25 23:07:44 · 243 阅读 · 0 评论 -
LinkedList 5-141. 环形链表
class Solution: def hasCycle(self,head:ListNode) ->bool: seen=set() while head: if head in seen: return True seen.add(head) head = head.next return False原创 2022-06-22 23:29:33 · 1703 阅读 · 0 评论 -
力扣 简单 链表5 - 234. 回文链表
class Solution: def isPalindrome(self,head:ListNode) ->bool: vals= [] current_node =head while current_node is not None: vals.append(current_node.val) current_node = current_node.next return vals原创 2022-06-22 23:24:08 · 209 阅读 · 0 评论 -
链表4- 21 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2022-06-22 08:45:27 · 136 阅读 · 0 评论 -
力扣链表3-206反转链表 牛客网NC78 C++ python
class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode* s; ListNode* z = NULL; while(pHead != NULL){ s = pHead ->next; pHead ->next = z; z = pHead; pHead.原创 2021-07-29 13:10:12 · 191 阅读 · 0 评论 -
python(3.10.5) 内置函数
Built-in FunctionsAabs()aiter()all()any()anext()ascii()Bbin()bool()breakpoint()bytearray()bytes()Ccallable()chr()classmethod()compile()complex()Ddelattr()dict()dir()divmod()Eenumerate()eval()exec()Ffilter()float()format()frozenset()Ggetattr()globals()Hhasa原创 2022-06-10 08:13:42 · 301 阅读 · 0 评论 -
Leetcode String to integer(Atoi)
^:匹配字符串开头[\+\-]:代表一个+字符或-字符?:前面一个字符可有可无\d:一个数字+:前面一个字符的一个或多个\D:一个非数字字符*:前面一个字符的0个或多个原创 2022-06-10 00:24:13 · 159 阅读 · 0 评论 -
String-4-242. 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。原创 2022-06-09 14:40:11 · 102 阅读 · 0 评论 -
String easy 3-387. 字符串中的第一个唯一字符
class Solution: def firstUniqChar(self,s:str)->int: frequency = collections.Counter(s) for i,ch in enumerate(s): if frequency[ch] == 1: return i return -1原创 2022-06-08 23:30:02 · 132 阅读 · 0 评论 -
Arrry11_easy.48.旋转图像
n×n 的二维矩阵matrix 表示一个图像。原创 2022-05-31 23:09:20 · 170 阅读 · 0 评论 -
array&string中级 6.最长回文子串 leetcode longestPalindrome
class Solution: def longestPalindrome(self, s: str) -> str: def palindrome(s, l, r): while l >= 0 and r < len(s) and s[l] == s[r]: l -= 1 r += 1 return s[l+1:r] .原创 2022-05-25 23:07:26 · 170 阅读 · 0 评论 -
Array6: 350. 两个数组的交集 II
class Solution: def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]: if len(nums1) > len(nums2): return self.intersect(nums2, nums1) m = collections.Counter() for num in nums1: .原创 2022-05-24 23:41:59 · 192 阅读 · 0 评论 -
力扣top interview ques 数组第三题:189.旋转数组
class Solution: def rotate(self,nums:List[int],k:int) -> None: length = len(nums) k %= length nums[:] = nums[::-1] nums[:k] = nums[:k][::-1] nums[k:] = nums[k:][::-1]class Solution: def rotate(se...原创 2022-05-21 21:13:15 · 150 阅读 · 0 评论 -
买卖股票的最佳时机2
class Solution: def maxProfit(self,prices:List[int]) -> int: profit = 0 for i in range(1,len(nums)): tmp = prices[i] - prices[i-1] if tmp>0: profit +=tmp return profit原创 2022-05-21 19:11:02 · 117 阅读 · 0 评论 -
力扣 最长公共前缀,暴力法
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if not strs: return '' s1, s2 = min(strs), max(strs) for i in range(len(s1)): if s1[i] != s2[i]: return s1[.原创 2022-05-10 23:52:14 · 107 阅读 · 0 评论 -
字符串-简单2.整数反转 力扣7 Reverse Integer
class Solution: def reverse(self, x: int) -> int: INT_MIN, INT_MAX = -2**31, 2**31 - 1 rev = 0 while x != 0: # INT_MIN 也是一个负数,不能写成 rev < INT_MIN // 10 if rev < INT_MIN // 10 + 1 or rev > INT.原创 2022-05-09 23:33:47 · 427 阅读 · 0 评论 -
插入区间 leetcode
给你一个 无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。class Solution: def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]: left, right = newInterval placed = False原创 2022-05-08 00:38:21 · 93 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
INT_MAX = 2 ** 31 - 1INT_MIN = -2 ** 31class Automaton: def __init__(self): self.state = 'start' self.sign = 1 self.ans = 0 self.table = { 'start': ['start', 'signed', 'in_number', 'end'], ...原创 2022-05-03 23:45:15 · 215 阅读 · 0 评论