V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Knuth  ›  全部回复第 12 页 / 共 27 页
回复总数  535
1 ... 8  9  10  11  12  13  14  15  16  17 ... 27  
2022-08-07 23:01:12 +08:00
回复了 Knuth 创建的主题 LeetCode Leetcode 刷题记录
2020/8/7
快速排序
关于边界条件 https://www.acwing.com/solution/content/16777/
这篇题解讲的很不错,个人喜欢用 j 做边界,所以 pivot=nums[l],对于用 i 做边界,则需要同 j 的情况取反。对于数据增强的情况下 pivot 取 nums[(l+r)/2]或随机化加快速度
``` cpp
void quick_sort(vector<int>& nums, int l, int r) {
if(l >= r) {
return ;
}
// int pivot = (r + l) / 2;
int pivot = l + rand() % (r - l + 1);
// 注意基准元素应当取出来比较
int x = nums[pivot];
int i = l - 1;
int j = r + 1;
while(i < j) {
// x 不能用 nums[pivot]代替,因为 swap 会破坏 nums[pivot]
while(nums[++i] < x);
while(nums[--j] > x);
if(i < j) {
swap(nums[i], nums[j]);
}
}
quick_sort(nums, l, j);
quick_sort(nums, j+1, r);
}
```
归并排序
堆排序
(改天在学
快速选择算法
思路:直接 k-1 寻找排序后第 k-1 个元素的位置,因为每次只递归一边,所以期望复杂度时 O(n),具体证明算导(看不懂 x

``` cpp
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
return quick_select(nums, 0, nums.size() - 1, k - 1);
}

int quick_select(vector<int>& nums, int l, int r, int k) {
if(l >= r) {
return nums[l];
}
int i = l - 1;
int j = r + 1;
// int pivot = l + rand() % (r - l + 1);
int pivot = (l + r) / 2;
// int pivot = l;
int x = nums[pivot];
while(i < j) {
while(nums[++i] > x);
while(nums[--j] < x);
if(i < j) {
swap(nums[i], nums[j]);
}
}
//
// int sl = j - l + 1;
if(k <= j) {
return quick_select(nums, l, j, k);
}
return quick_select(nums, j + 1, r, k);

}
};
```

15. 三数之和
首先排序
对于 nums[i] > 0,可以直接 break ,后面不会有符合题意的三元组
注意 i 去重,jk 在取到目标三元组也需要去重,
103. 二叉树的锯齿形层序遍历
flag 标记奇 /偶
2022-08-07 13:44:39 +08:00
回复了 Knuth 创建的主题 LeetCode Leetcode 刷题记录
2022/8/7
做点简单的
1. 两数之和 哈希表一次遍历
167. 两数之和 II - 输入有序数组 双指针
2022-08-07 00:33:08 +08:00
回复了 Knuth 创建的主题 LeetCode Leetcode 刷题记录
@Knuth 补一个快速选择算法
215. 数组中的第 K 个最大元素-看 CLRS9.2 证明
2022-08-06 23:11:20 +08:00
回复了 Knuth 创建的主题 LeetCode Leetcode 刷题记录
工作不顺心,刷题继续

146. LRU 缓存
这题用两个 unordered_map+list 也能实现 O(1),明天在学习双向链表
2022-08-05 13:24:36 +08:00
回复了 npe 创建的主题 推广 八月黄桃成熟,帮家里卖点炎陵黄桃,欢迎各位 V 友品尝
啊🤔没吃过的水果+1
2022-08-04 23:04:22 +08:00
回复了 Knuth 创建的主题 LeetCode Leetcode 刷题记录
@Knuth #5 排列问题通过 used 数组标识已使用元素,子集通过 start 参数来过滤已使用元素
2022-08-04 21:39:14 +08:00
回复了 Knuth 创建的主题 LeetCode Leetcode 刷题记录
2020/8/4:
最近做了链表、回溯
链表
21. 合并两个有序链表
25. K 个一组翻转链表
92.反转链表 II
206.反转链表
链表题 dummy 节点可以节省好多工作
回溯
注意有重复元素时,先排序,在回溯过程中注意树层剪枝即 nums[i] == nums[i-1]&&used[i-1]=false 时跳过,此时代表 i-1 已经被选过了
46/47.全排列
78/90.子集
2022-07-31 12:13:38 +08:00
回复了 Knuth 创建的主题 LeetCode Leetcode 刷题记录
Day3
76. 最小覆盖子串
滑动窗口,收缩左边界
一个小技巧,对于哈希表 key 为 char 类型,value 为 int 类型,可以直接使用数组,int[128]。

通过这三道题对滑动窗口的题有了一定的理解

以后一周更新两次,题目坚持每天刷
2022-07-31 09:41:23 +08:00
回复了 xiaoweia 创建的主题 分享发现 ThinkBook 16 + 锐龙版,是今年唯一值得入手的笔记本……
用的 14+ 体验确实很不错👍
2022-07-30 15:53:53 +08:00
回复了 Knuth 创建的主题 LeetCode Leetcode 刷题记录
Day2
239. 滑动窗口最大值
优先队列 /单调队列
2022-07-29 23:21:07 +08:00
回复了 Knuth 创建的主题 LeetCode Leetcode 刷题记录
Day 1
3. 无重复字符的最长子串:哈希表、滑动窗口
2022-07-25 22:29:29 +08:00
回复了 pista 创建的主题 职场话题 家人们,安卓国内如何正确使用 LinkedIn app
@tt2767 不行啊
2022-07-25 21:01:09 +08:00
回复了 yexiao117 创建的主题 问与答 预算 6K,轻薄本,要 windows,老婆用,求推荐。
thinkbook 14+
2022-07-24 01:28:38 +08:00
回复了 Ranni 创建的主题 Windows 求助各位用 Windows 笔记本的程序员
@rpish 可以
2022-07-17 12:15:43 +08:00
回复了 smallyu 创建的主题 问与答 求助!能推荐个 5~8 K 的笔记本嘛
thinkbook
2022-07-13 14:17:45 +08:00
回复了 2696284032 创建的主题 电影 昨晚上熬夜看了部《教父》真的绝了
。。。
2022-07-12 21:02:07 +08:00
回复了 tkl 创建的主题 程序员 有没有技术比较强但是运营/盈利一般的公司?
@pengtdyd 你要说会看中文论文还能理解,说中文还是算了
2022-07-08 17:06:44 +08:00
回复了 hzzz0823 创建的主题 奇思妙想 为什么驾校体验会这么差劲啊
要么忍者点,早点学完,拿证那天来句国骂,大路朝天,各走一边;要么早点换教练。你这样说后面肯定给你使绊子。
祝好
1 ... 8  9  10  11  12  13  14  15  16  17 ... 27  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   997 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 22:22 · PVG 06:22 · LAX 15:22 · JFK 18:22
Developed with CodeLauncher
♥ Do have faith in what you're doing.