首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
13,308 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
10,907 阅读
3
gradle-5.4.1-all.zip下载
8,831 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
7,817 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
6,866 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
623
篇文章
累计收到
612
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
448
篇与
的结果
2023-01-17
21. 合并两个有序链表 双指针法+递归法
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1:输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = [] 输出:[]示例 3:输入:l1 = [], l2 = [0] 输出:[0]解法双指针法感觉有点暴力,没意思。class Solution: def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]: if list1 is None: return list2 if list2 is None: return list1 a = ListNode(0) result = a while list1 is not None or list2 is not None: if list1 is None and list2: result.next = list2 list2 = list2.next elif list2 is None and list1: result.next = list1 list1 = list1.next elif list1.val < list2.val: result.next = list1 list1 = list1.next else: result.next = list2 list2 = list2.next result = result.next return a.next递归法class Solution: def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]: if list1 is None: return list2 elif list2 is None: return list1 if list1.val < list2.val: list1.next = self.mergeTwoLists(list1.next, list2) return list1 list2.next = self.mergeTwoLists(list1,list2.next) return list2
2023年01月17日
88 阅读
0 评论
0 点赞
2023-01-16
【油猴】将github项目在网页版vs code打开,Show Code To Visual Studio
地址:https://greasyfork.org/zh-CN/scripts/443396-show-code-to-visual-studio主要用于在网页版vscode预览项目
2023年01月16日
89 阅读
0 评论
0 点赞
2023-01-15
绕过某博客查看文章验证码,关注公众号得验证码
之前也写过一篇,当时使用Burpsuite抓包,改包,有点杀鸡用牛刀了。虽然我挺支持为知识那啥的,但是吧要我去关注公众号太麻烦了 绕过查看文章需要验证码 其实就是改一个返回的字段,既然后端也是改,那我前端改也一样,就不用开其他软件。打开这个网址,尝试输入错误的验证码发送了网络请求,点击查看。盲猜result。查看这次请求的上下文。全是这一个js提供的,那就好办了,随便点一个进去。根据上述信息,可以得出关键词:result false true,因为他肯定会判断这个result是否是false或true,所以搜索。搜result有8个,懒得找了,继续搜falsefalse只有两个,并且一下就看见了==ture或==false。打个断点,查询提交错误验证码。一顿操作猛如虎,结果根本没进断点,那就不是这个地方。搜索true试一下,发现有段混淆代码存在==true。打个断点调试一下进入断点,放上去可以看见返回值。都到这里了,直接console改值,设置为true,然后放开断点,内容就出来了_0x77ddx18[__Ox552c9[0x34]] = true
2023年01月15日
113 阅读
0 评论
0 点赞
2023-01-15
448. 找到所有数组中消失的数字 set求差法+下标排除法
题目给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。示例 1:输入:nums = [4,3,2,7,8,2,3,1] 输出:[5,6] 示例 2: 输入:nums = [1,1] 输出:[2]提示:n == nums.length 1 <= n <= 105 1 <= nums[i] <= n进阶:你能在不使用额外空间且时间复杂度为 O(n) 的情况下解决这个问题吗? 你可以假定返回的数组不算在额外空间内。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法本来用暴力破解,直接推导式生成一个从1到nums长度+1的list,如果在nums则不添加,但是吧,超时了。class Solution: def findDisappearedNumbers(self, nums: List[int]) -> List[int]: return [i for i in range(1, max(nums) + 1) if i not in nums]本来是想用求差的,但是list没这个方法,但是set有,所以换成set试一下。class Solution: def findDisappearedNumbers(self, nums: List[int]) -> List[int]: return list(set(range(1, len(nums) + 1)).difference(set(nums)))虽然过了,但是这个方法并不符合进阶。秒呀法这个空间虽然小了,但是时间就长了。文字描述一下就是,既然给的list里面是1-n的数字,但是少了几个。如果把这些数字-1,那么就是一个下标,可以把这个下标的值取反,或者加至不存在于nums中的值,当遍历一过次后,那些不存在于nums中的值的下标的值不会被改变。在最后返回的时候排除掉被改变的值就行了。取反class Solution: def findDisappearedNumbers(self, nums: List[int]) -> List[int]: for i in nums: t = abs(i) - 1 if nums[t] > 0: nums[t] = -nums[t] return [index + 1 for index, value in enumerate(nums) if value > 0]加上nclass Solution: def findDisappearedNumbers(self, nums: List[int]) -> List[int]: n = len(nums) for i in nums: nums[(i - 1) % n] += n return [index + 1 for index, value in enumerate(nums) if value <= n]
2023年01月15日
83 阅读
0 评论
0 点赞
2023-01-15
283. 移动零 双指针法+排序法
题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums = [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums = [0] 输出: [0]提示:1 <= nums.length <= 104 -231 <= nums[i] <= 231 - 1进阶:你能尽量减少完成的操作次数吗?来源:力扣(LeetCode)链接:https://leetcode.cn/problems/move-zeroes著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法双指针法这个方法嘞,依旧是快慢指针,一个指针用来遍历,一个指针用来记录非零元素的位置。大概就是一个这样的过程:快指针一直往前走,如果遇到非零元素,就直接赋值给慢指针,然后慢指针+1这样一直执行下去,所有的非零元素都到了最前面。这时候,我们需要将后面的元素清零。我这边直接放在一个循环了。from typing import List class Solution: def moveZeroes(self, nums: List[int]) -> None: if nums: fast, slow, length = 0, 0, len(nums) while fast < length or slow < length: if fast != length: if nums[fast] != 0: nums[slow] = nums[fast] slow += 1 fast += 1 elif slow < length: nums[slow] = 0 slow += 1 Solution().moveZeroes([0, 1, 0, 3, 12])排序法刚刚看了下,我在2020年居然提交过这道题,一行解决。。。效率和上面方法差不多。class Solution: def moveZeroes(self, nums: List[int]) -> None: nums.sort(key=bool,reverse=True)
2023年01月15日
77 阅读
0 评论
0 点赞
2023-01-15
88. 合并两个有序数组+双指针法
题目给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6] 解释:需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。示例 2:输入:nums1 = [1], m = 1, nums2 = [], n = 0 输出:[1] 解释:需要合并 [1] 和 [] 。 合并结果是 [1] 。示例 3:输入:nums1 = [0], m = 0, nums2 = [1], n = 1 输出:[1] 解释:需要合并的数组是 [] 和 [1] 。 合并结果是 [1] 。 注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。提示:nums1.length == m + n nums2.length == n 0 <= m, n <= 200 1 <= m + n <= 200 -109 <= nums1[i], nums2[j] <= 109来源:力扣(LeetCode)链接:https://leetcode.cn/problems/merge-sorted-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法合并排序class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: nums1[m:] = nums2 nums1.sort()双指针法因为有两个list,因此就是两个指针,我们需要建立一个临时list,去存放结果。两个指针都从0开始,就是两个list的下标。fast = slow = 0然后两两比较,将小的那一个放到临时数组,并且下标+=1。最终,将临时list覆盖nums1。这是一种方法。然后还可以优化一下,不需要临时数组,因为nums1里面预留了nums2的位置,我们只需要将指针从大往小来插入即可。from typing import List class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: fast, slow, index = m - 1, n - 1, m + n - 1 while fast >= 0 or slow >= 0: if fast < 0: nums1[index] = nums2[slow] slow -= 1 elif slow < 0: nums1[index] = nums1[fast] fast -= 1 elif nums1[fast] > nums2[slow]: nums1[index] = nums1[fast] fast -= 1 else: nums1[index] = nums2[slow] slow -= 1 index -= 1 if __name__ == '__main__': Solution().merge([1, 2, 3, 0, 0, 0], 3, [2, 5, 6], 3)
2023年01月15日
74 阅读
0 评论
0 点赞
2023-01-15
1. 两数之和 空间换时间
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[1,2]示例 3:输入:nums = [3,3], target = 6输出:[0,1] 提示:2 <= nums.length <= 104-109 <= nums[i] <= 109-109 <= target <= 109只会存在一个有效答案 进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?来源:力扣(LeetCode)链接:https://leetcode.cn/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。这个题目为leetcode第一题,嗯的确有点坑。如果用暴力破解,因为要找两个数,所以至少需要循环两次。可以换一个思路。给我们了一个列表,和一个目标值,为表尊重,我们至少需要便利一次啵。然后两数之和嘛,a+b=c,现在a和c以及知道了,算出b的值。b=c-a。所以,我们就可以这样,循环一次,每次都是target-当前num得到的值判断得到的值是否在list。由于这是检索,因此可以配合字典,也就是hash,速度更快。class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: h = {} for index, value in enumerate(nums): num = h.get(target - value) if num is not None: return [index, num] else: h[value] = index
2023年01月15日
108 阅读
0 评论
0 点赞
1
...
6
7
8
...
64