首页
畅所欲言
友情链接
壁纸大全
数据统计
直播
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
12,612 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
10,340 阅读
3
gradle-5.4.1-all.zip下载
8,243 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
7,369 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
6,711 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
标签搜索
弹性布局
Lan
累计撰写
597
篇文章
累计收到
583
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
直播
搜索到
111
篇与
算法刷题
的结果
2023-09-20
189. 轮转数组
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]示例 2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释: 向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]提示:1 <= nums.length <= 105-231 <= nums[i] <= 231 - 10 <= k <= 105进阶:尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ temp = [i for i in nums] l_n = len(nums) for index, num in enumerate(temp): nums[(index + k) % l_n] = num
2023年09月20日
3 阅读
0 评论
0 点赞
2023-09-15
13. 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。给定一个罗马数字,将其转换成整数。示例 1:输入: s = "III"输出: 3示例 2:输入: s = "IV"输出: 4示例 3:输入: s = "IX"输出: 9示例 4:输入: s = "LVIII"输出: 58解释: L = 50, V= 5, III = 3.示例 5:输入: s = "MCMXCIV"输出: 1994解释: M = 1000, CM = 900, XC = 90, IV = 4.提示:1 <= s.length <= 15s 仅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M')题目数据保证 s 是一个有效的罗马数字,且表示整数在范围 [1, 3999] 内题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。IL 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX 。关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。class Solution: lm2nm = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000, } def romanToInt(self, s: str) -> int: result = 0 for i, v in enumerate(s): n = self.lm2nm.get(v) if i > 0: if s[i - 1] == 'I': if v == 'V': result += 3 elif v == 'X': result += 8 else: result += n elif s[i - 1] == 'X': if v == 'L': result += 30 elif v == 'C': result += 80 else: result += n elif s[i - 1] == 'C': if v == 'D': result += 300 elif v == 'M': result += 800 else: result += n else: result += n else: result += n return result
2023年09月15日
7 阅读
0 评论
0 点赞
2023-09-15
14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。提示:1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: index, res, min_len = 0, "", min([len(s) for s in strs]), for i in range(min_len): temp = '' for j in strs: if temp == '': temp = j[i] elif j[i] != temp: return res res += temp return res
2023年09月15日
10 阅读
0 评论
0 点赞
2023-09-14
28. 找出字符串中第一个匹配项的下标 双指针
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。示例 1:输入:haystack = "sadbutsad", needle = "sad"输出:0解释:"sad" 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0 。示例 2:输入:haystack = "leetcode", needle = "leeto"输出:-1解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1 。提示:1 <= haystack.length, needle.length <= 104haystack 和 needle 仅由小写英文字符组成class Solution: def strStr(self, haystack: str, needle: str) -> int: fast, slow = 0, 0 while fast < len(haystack) and slow < len(needle): if haystack[fast] == needle[slow]: fast += 1 slow += 1 else: fast = fast - slow + 1 slow = 0 if slow == len(needle): return fast - slow return -1
2023年09月14日
5 阅读
0 评论
0 点赞
2023-02-20
【Hot100】【一般】3. 无重复字符的最长子串
题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 提示:0 <= s.length <= 5 * 104s 由英文字母、数字、符号和空格组成来源:力扣(LeetCode)链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if not s: return 0 l, t, slow, fast = 0, set(), 0, 0 while slow < len(s) and fast < len(s): if s[fast] not in t: t.add(s[fast]) fast += 1 else: t = {s[slow]} slow += 1 fast = slow l = len(t) if len(t) > l else l return l
2023年02月20日
55 阅读
2 评论
0 点赞
2023-02-19
【周赛】【简单】6362. 合并两个二维数组 - 求和法
题目给你两个 二维 整数数组 nums1 和 nums2.nums1[i] = [idi, vali] 表示编号为 idi 的数字对应的值等于 vali 。nums2[i] = [idi, vali] 表示编号为 idi 的数字对应的值等于 vali 。每个数组都包含 互不相同 的 id ,并按 id 以 递增 顺序排列。请你将两个数组合并为一个按 id 以递增顺序排列的数组,并符合下述条件:只有在两个数组中至少出现过一次的 id 才能包含在结果数组内。每个 id 在结果数组中 只能出现一次 ,并且其对应的值等于两个数组中该 id 所对应的值求和。如果某个数组中不存在该 id ,则认为其对应的值等于 0 。返回结果数组。返回的数组需要按 id 以递增顺序排列。 示例 1:输入:nums1 = [[1,2],[2,3],[4,5]], nums2 = [[1,4],[3,2],[4,1]]输出:[[1,6],[2,3],[3,2],[4,6]]解释:结果数组中包含以下元素:id = 1 ,对应的值等于 2 + 4 = 6 。id = 2 ,对应的值等于 3 。id = 3 ,对应的值等于 2 。id = 4 ,对应的值等于5 + 1 = 6 。示例 2:输入:nums1 = [[2,4],[3,6],[5,5]], nums2 = [[1,3],[4,3]]输出:[[1,3],[2,4],[3,6],[4,3],[5,5]]解释:不存在共同 id ,在结果数组中只需要包含每个 id 和其对应的值。提示:1 <= nums1.length, nums2.length <= 200nums1[i].length == nums2[j].length == 21 <= idi, vali <= 1000数组中的 id 互不相同数据均按 id 以严格递增顺序排列解法今天早上刚好看见有个周赛,于是参与了一下,我还是太菜了,只做了一个半。class Solution: def mergeArrays(self, nums1: List[List[int]], nums2: List[List[int]]) -> List[List[int]]: fast, slow = 0, 0 while fast < len(nums1) and slow < len(nums2): if nums1[fast][0] < nums2[slow][0]: fast += 1 elif nums1[fast][0] > nums2[slow][0]: nums1.insert(fast, nums2[slow]) slow += 1 else: nums1[fast][1] += nums2[slow][1] slow += 1 return nums1 + nums2[slow:] if slow < len(nums2) else nums1
2023年02月19日
42 阅读
0 评论
0 点赞
2023-02-09
【简单】144. 二叉树的前序遍历
题目给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3] 输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100进阶:递归算法很简单,你可以通过迭代算法完成吗?解法其实这种题目不难,我感觉烦的是数据结构,题目里面给个list,搞得我不好测试。比如之前的链表,非得让我自己写个list和链表的转换才好进行调试。from typing import Optional, List from alo.common import TreeNode class Solution: def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: ans = [] stack = [root] while stack: node = stack.pop() if node: ans.append(node.val) if node.right: stack.append(node.right) if node.left: stack.append(node.left) return ans if __name__ == '__main__': s = Solution() s.preorderTraversal(TreeNode(1, None, TreeNode(2, TreeNode(3), None)))
2023年02月09日
37 阅读
0 评论
0 点赞
1
2
...
16