-
2021-01-12 160 60695
-
2020-04-28 98651
-
leetcodetop 数组中的第k个最大元素 https://github.com/afatcoder/LeetcodeTop/blob/master/bytedance/client.md
-
位运算
-
数学
- 分治
- 双指针
- 排序
- 贪心思想
- 二分查找
- 链表
- 树
- 栈和队列
- 哈希表
- 字符串
- 数组和矩阵
- 位运算
- leetcode playground拷贝代码到本地
debug.cc
- debug.cc中已经写好了常用的库和节点结构体
-
- 爬楼梯
-
- 挨家各户抢劫
-
- 环形打家劫舍
- 42[Hard]
- leetcode 1091
- leetcode 279
- 冒泡排序
- 快速排序,912:排序数组
- 归并排序
- 插入排序, 二分插入排序
- 选择排序
- shell排序
- 计数排序 counting sort
- 基数排序 radix sort
- 桶排序bucket sort
- 堆排序 heap_sort
- 69
- 744
- 540
- 278
- 852[Easy]
- 455
- [Medium]435
- [Medium]452
- [Medium]406
- 121
- 122
- 605
- 392
- 665
- 53
- [Medium]763
- 461
- 136
- 268
- 190
- 231
- 260
- 476
- [Medium]318
- [Medium]338
- 283 一串数字中的0移到末尾, 不改变非0相对位置; 双指针法
- 566 改变矩阵维度
-
- 数组中最大连续1的个数
- [Medium]240
- [Medium]287
- [Medium]667
- 697
- 766
- [Medium]565
- [Medium]769
- 1. Two Sum
- [Easy]167: two sum II
- 15. Three Sum: 排序+双指针+判重
- [18. Four Sum]Medium: 排序+双指针+判重
- [Easy]633: Sum of Square Numbers: 使用unsigend int; Math.sqrt剪枝
- [Easy]345: Reverse Vowels of a String
- [Medidum]345: Reverse Vowels of a String
- [Easy]88: Merge Sorted Array
- [Easy]141: Linked List Cycle: 双指针, 一个指针跳一步, 另一个指针跳2步, 若存在环, 则一定能相遇
- [Medium]524: Longest Word in Dictionary through Deleting: 用指针判断另一个string是否是当前string的字串, 即另一个string的char与当前string的char相等, 另一个string的指针才增加直到遍历完
- [Medium]347. Top K Frequent Elements
- [Medium]451. Sort Characters By Frequency: 根据char出现的频率倒序排序, 然后输出
- [Medium]75. Sort Colors, 三色旗排序: 也可以插入排序; 当然还有三色旗的特定解法
- 160. Intersection of Two Linked Lists: 暴力法和双指针法: 两个指针分别从头同步遍历, 如果到达链表尾后, 切换到另一个链表头, 依然同步遍历, 如果相等, 则是交点, 否则到达末尾, 返回NULL
- 206. Reverse Linked List (Easy)
- 21. Merge Two Sorted Lists
- 83. Remove Duplicates from Sorted List
- [Medium]: 19. Remove Nth Node From End of List: 双指针, 第2个指针比第一个指针先走n步, 注意边界情况
- [Medium]24. Swap Nodes in Pairs: 交换链表相邻两个节点
- [Medium]147. Insertion Sort List: 链表实现插入排序
- [Medium]445. Add Two Numbers II: 递归思想; 即可以使用stack库, 也可以手动实现递归思想
- [Medium]234.Palindrome Linked List: 通过递归函数求解
- [Medium]725. Split Linked List in Parts: 均分链表, 任意分割后的链表长度差不超过1, 可以有null: 先均分, 再对剩余的分配到前面的段
- [Medium]328. Odd Even Linked List: 按照节点顺序的奇偶性组织到一起
- [Medium]946. 验证出栈顺序
- [Easy] 700
- [Medium] 897
- [Easy]530. Minimum Absolute Difference in BST: 方法1: 先中序遍历得出排序数组, 再比较获得最小的差值; 注意传输vector的引用; 方法2: 中序遍历, 保留之前的val值
- [Medium]669. 给一个二叉搜索树和范围[L, R], 修建该树, 使得所有节点在范围内
- [Medium]230. 二叉搜索树中第k小的数. 非递归中序遍历, 第k个退栈的即是
- [Medium]538. 反序中序遍历
- [Medium]235. BST的最近公共祖先
- [Medium]108. 从有序数组建立平衡的二叉搜索树
- [Medium]109. 从有序链表建立平衡的二叉搜索树
- [Easy]653. 在BST中找两个点, 其和是否等于k
- [Medium]501. 找出二叉搜索树中最多出现的数
- [easy]104: 树的深度
- [easy]110: 判断是否是平衡树, 任意节点子节点的高度差不超过1
- [easy]226: 反转二叉树
- [easy]543: 任意节点之间最长的距离, 左右子节点的最长路径相加即经过此节点的最长距离, 求出每个节点的最长距离的最大值
- [easy]112:
- [Medium]437: 存在多少条路径等于指定sum
- 101: 二叉树是否对称
- 572: b二叉树是否是a二叉树的子树
- 111: 二叉树的根节点到叶节点的最小深度
- 404: 所有左叶子的和
- 687: 在二叉树中找出有相同值的最长路径
- [Medium]337: 二叉树取不能相邻的点, 使得值最大. 树形dp
- 671: 求类似最小二叉树的第二小的值
- 144: 非递归实现的二叉树先序遍历
- 145: 非递归实现的二叉树后序遍历
- 94: 非递归实现的二叉树中序遍历
- [Medium]236. 二叉树的最近公共祖先
- 637, 671
- 994[Medium]. 多源BFS
- [Medium]208. Trie树建立
- [Medium]677. Trie树的应用, 求前缀和
-
- 用stack模拟queue
-
- 用queue模拟stack
-
- 实现一个栈,提供获取最小值的接口
- [Medium]739. 数组中元素与下一个比它大的元素之间的距离
- [Medium]150. 逆波兰表达式求值
-
- 简单计算器
- [Medium]84. 求最大矩形面积. 用到非递减栈
- [Medium]241. 分治法求表达式的多种结果(任意添加括号)
- [Medium]95
- [Medium]128 求最长连续数字串
- [Hard]51. N皇后问题
- [Hard]282. 一串数字添加+,-,*等于特定的value
- [Medium]46. 全排列
- [Medium]22. 动态规划也可以做
-
- 两个字符串中包含的字母是否相同
- 409
- 205
- 5 最长回文串
- 647 回文子串的个数
- 696 要对字串进行分组
- 1163 后缀字符串, 字典序, 双指针
- 1.Tow sum
- 19. Remove Nth Node From End of List
- 21. Merge Two Sorted Lists
- 24. Swap Nodes in Pairs
- 75. Sort Colors
- 83. Remove Duplicates from Sorted List
- 88: Merge Sorted Array
- 94: 非递归实现的二叉树中序遍历
- 101: 二叉树是否对称
- 104: 树的深度
-
- 从有序数组建立平衡的二叉搜索树
-
- 从有序链表建立平衡的二叉搜索树
- 110: 判断是否是平衡树, 任意节点子节点的高度差不超过1
- 111: 二叉树的根节点到叶节点的最小深度
- 112
- 128 求最长连续数字串
- 141: Linked List Cycle
- 144: 非递归实现的二叉树先序遍历
- 145: 非递归实现的二叉树后序遍历
- 147. Insertion Sort List
-
- 逆波兰表达式求值
-
- 实现一个栈,提供获取最小值的接口
- 160. Intersection of Two Linked Lists
- 167: two sum II
- 206. Reverse Linked List (Easy)
-
- Trie树建立
- 226: 反转二叉树
-
- 用queue模拟stack
-
- 简单计算器
- 230
- 234.Palindrome Linked List: 通过递归函数求解
-
- 用stack模拟queue
- 235
-
- 二叉树的最近公共祖先
-
- 分治法求表达式的多种结果(任意添加括号)
- 328. Odd Even Linked List
- 337: 二叉树取不能相邻的点, 使得值最大. 树形dp
- 345: Reverse Vowels of a String
- 347. Top K Frequent Elements
- 404: 所有左叶子的和
- 437
- 445. Add Two Numbers II
- 451. Sort Characters By Frequency
- 501
- 524: Longest Word in Dictionary through Deleting
- 530. Minimum Absolute Difference in BST: 先中序遍历得出排序数组, 再比较获得最小的差值; 注意传输vector的引用
-
- 反序中序遍历
- 543: 任意节点之间最长的距离
- 572: b二叉树是否是a二叉树的子树
- 617: 归并两个二叉树
- 633: Sum of Square Numbers
- 637
- 653
-
- 给一个二叉搜索树和范围[L, R], 修建该树, 使得所有节点在范围内
- 671: 求类似最小二叉树的第二小的值
- 677: trie树的应用
- 687: 在二叉树中找出有相同值的最长路径
- 725. Split Linked List in Parts
-
- 数组中元素与下一个比它大的元素之间的距离
- 912:排序数组
# 用fd找到可执行程序删除
fd -x t |xargs rm -rf
# 用fd找到文件名包含dSYM文件夹删除
fd dSYM |xargs rm -rf
// 当前目录生成a.out可执行文件
clang++ a.cc
// 当前目录下生成可调式执行程序a.out
clang++ -g a.cc
// 用lldb打开a.out就可以调试了
lldb ./a.out
add following to test.sh
g++ $1
./a.out<a.in
how to use test.sh
. test.sh file.cc
sh test.sh file.cc
add following to your $VIMRUNTIM/vimrc
" make
set makeprg=g++\ -Wall\ \ %
nmap <silent> <F6> :make<CR><CR>
nmap <silent> <F7> :call Do_Make()<CR>
function! Do_Make()
execute "!./a.out < a.in"
endfunction
<F6>
: compile current file, then get a.out<F7>
: input a.in into a.outa.in
: test data
- sizeof()
int nums[10];
printf("%d %d", (int)sizeof(nums), (int)sizeof(int) * 10);
the result is 40 40
, that means that sizeof(nums)
equals sizeof(int) * 10
- memset()
int nums[10];
memset(nums, 0, sizeof(nums)); //set every number in nums to 0
memset(nums, -1, sizeof(nums)); //set every number in nums to -1
memset(nums, 0xff, sizeof(nums)); //set every number in nums to -1
- max unsigend long long is 64bit, 0xffffffffffffffff, 大于
1.84*10^20
HDU1176 [Easy]动态规划 HDU1241 深度优先搜索DFS HDU1312 深度优先搜索DFS HDU1421 动态规划 HDU2204 容斥原理 HDU3068 [Medium]最长回文串Manacher算法 HDU3696 DFS+拓扑排序(或者DFS) HDU4105 [Medium]动态规划 HDU4109 关键路径AOE(Activity On Edge) HDU4635 强连通分量Targan
jobdu1000 oj入门简单题 jobdu1008 单元最短路劲Dijkstra,使用邻接列表 jobdu1009 二叉搜索树/BST Binary Search Tree jobdu1011 Easy动态规划, 最大连续子序列 jobdu1077 Easy动态规划, 最大连续子序列, 包含负数, 使用int64 jobdu1012 并查集 jobdu1017 最小生成树Kruskal jobdu1018 简单题, 使用堆来统计 jobdu1019 逆波兰表达式和一行多个单词的输入 jobdu1024 最小生成树Prim minium spanning tree求最小值, 注意重复边的输入 jobdu1027 欧拉回路 Eulerian Path jobdu1028 最小生成树, 并查集 jobdu1041 简单排序然后去重题, 但要注意输出末尾无空格 jobdu1067 简单题, 求阶乘, 递归 jobdu1073 简单题, 递归打印杨辉三角 jobdu1112 Easy动态规划, 最长非增非连续子序列 jobdu1120 全排列, 用c++ STL 的next_permutation(str, str + len)实现,不要使用string, 会TLE jobdu1140 八皇后Eight Queens Puzzle jobdu1172 哈弗曼树和小根堆 Huffeman Tree and min-heaps/max-heaps jobdu1176 完全二叉树第n层的节点数 jobdu1182 简单题, 但要使用fgets jobdu1184 由先序遍历字符串生成二叉树 jobdu1185 排序 jobdu1186 闰年 Leap Year jobdu1201 二叉排序树/BST Binary Sort Tree jobdu1205 Easy动态规划, int64 jobdu1214 [Medium]状态dp jobdu1283 [Easy]字符串 jobdu1335 [Easy]BFS jobdu1341 单源最短路径Dijkstra,使用邻接矩阵 jobdu1342 栈, 匹配的括号数 jobdu1343 弗洛伊德变种Floyd jobdu1347 最小生成树Kruskal+并查集 jobdu1348 归并排序求逆序对,结果是long long int jobdu1349 二分法 jobdu1350 [Easy]二叉树建树, 求深度 jobdu1351 [Easy]位运算 jobdu1352 [Easy]两数之和 jobdu1369 全排列 Permutate jobdu1404 BFS求有条件的最短路径 jobdu1406 最短路劲条数, Dijkstra jobdu1408 Easy动态规划 jobdu1411 Dijkstra求最短回路 jobdu1417 最小生成树, Kruskal, STL map<>标记点的id jobdu1448 拓扑排序
poj1185 [Medium]状态DP poj1236 有向图的联通分量与联通图的缩点 poj1837 [Medium]动态规划 poj1947 [Medium]树型DP poj2186 有向图的联通分量与联通图的缩点 poj2367 简单拓扑排序 poj2407 欧拉函数 poj2478 欧拉函数 poj2773 容斥原理+二分法 poj3311 TSP(Travelling salesman problem)+状态DP poj3461 KMP poj3904 容斥原理 poj3974 最长回文串Manacher算法
uva10325 容斥原理, 使用long long uva11806 容斥原理
COUNTREL [Medium]容斥原理+数论模运算
ASSIGN-Assignments [Easy]状态DP, 使用滚动数组和位来表示状态