Skip to content

tainzhi/acm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

leetcode 全站排名

leetcode profile

  • 分治
  • 双指针
  • 排序
  • 贪心思想
  • 二分查找
  • 链表
  • 栈和队列
  • 哈希表
  • 字符串
  • 数组和矩阵
  • 位运算

leetcode本地调试c++

  • leetcode playground拷贝代码到本地debug.cc
  • debug.cc中已经写好了常用的库和节点结构体

针对面试

动态规划

    1. 爬楼梯
    1. 挨家各户抢劫
    1. 环形打家劫舍
  • 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. 数组中最大连续1的个数
  • [Medium]240
  • [Medium]287
  • [Medium]667
  • 697
  • 766
  • [Medium]565
  • [Medium]769

双指针

排序

链表指针

堆和链表

二叉树BST(binary search tree)

  • [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. 二叉树的最近公共祖先

BFS

  • 637, 671
  • 994[Medium]. 多源BFS

Trie树

  • [Medium]208. Trie树建立
  • [Medium]677. Trie树的应用, 求前缀和

栈和队列

    1. 用stack模拟queue
    1. 用queue模拟stack
    1. 实现一个栈,提供获取最小值的接口
    1. 用栈来判断一个字符串中{}是否成对
  • [Medium]739. 数组中元素与下一个比它大的元素之间的距离
  • [Medium]150. 逆波兰表达式求值
    1. 简单计算器
  • [Medium]84. 求最大矩形面积. 用到非递减栈

分治法

  • [Medium]241. 分治法求表达式的多种结果(任意添加括号)
  • [Medium]95

哈希

  • [Medium]128 求最长连续数字串

回朔法

  • [Hard]51. N皇后问题
  • [Hard]282. 一串数字添加+,-,*等于特定的value
  • [Medium]46. 全排列
  • [Medium]22. 动态规划也可以做

字符串

    1. 两个字符串中包含的字母是否相同
  • 409
  • 205
  • 5 最长回文串
  • 647 回文子串的个数
  • 696 要对字串进行分组
  • 1163 后缀字符串, 字典序, 双指针

leetcode-cn

其他的一些笔记

删除除README和源码外的所有程序

# 用fd找到可执行程序删除
fd -x t |xargs rm -rf
# 用fd找到文件名包含dSYM文件夹删除
fd dSYM |xargs rm -rf

compile and debug in MacOs

// 当前目录生成a.out可执行文件
clang++ a.cc

// 当前目录下生成可调式执行程序a.out
clang++ -g a.cc
// 用lldb打开a.out就可以调试了
lldb ./a.out

Auto compile with bash

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

Auto compile file and auto input data with vim

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.out
  • a.in: test data

About c/c++

  • 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

ACM

hdu


HDU1176 [Easy]动态规划 HDU1241 深度优先搜索DFS HDU1312 深度优先搜索DFS HDU1421 动态规划 HDU2204 容斥原理 HDU3068 [Medium]最长回文串Manacher算法 HDU3696 DFS+拓扑排序(或者DFS) HDU4105 [Medium]动态规划 HDU4109 关键路径AOE(Activity On Edge) HDU4635 强连通分量Targan

jobdu


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 拓扑排序

poj


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算法

UVA


uva10325 容斥原理, 使用long long uva11806 容斥原理

Codechef

COUNTREL [Medium]容斥原理+数论模运算

SPOJ

ASSIGN-Assignments [Easy]状态DP, 使用滚动数组和位来表示状态

About

leetcode题解记录; 算法相关,some solutions for ACM/ICPC online judge

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published