/Algorithm

算法渣的挣扎_(:τ」∠)_

Primary LanguageJava

好好吃饭好好刷题🍚

以下停更-。- 可以在777 Interview Notes - 数据结构与算法内方便的浏览算法笔记~

Q: Question

A: Answer

TAG取自Leetcode相关标签 🎈

简单 中等 困难

题号 注意点
Interview-62 Q A [数学]圆圈中最后剩下的数字
Interview-01.06 Q A [字符串]字符串压缩
LeetCode-1162 Q A [图/BFS]地图分析
LeetCode-1160 Q A [数组/哈希表]拼写单词
LeetCode-1111 Q A [栈]有效括号的嵌套深度
LeetCode-1071 Q A [字符串]字符串的最大公因子 GCD
LeetCode-1013 Q A [数组]将数组分成和相等的三部分
LeetCode-999 Q A [数组]车的可用捕获量(象棋)
LeetCode-912 Q A [排序]排序数组
LeetCode-892 Q A [几何/数学]三维形体的表面积
LeetCode-836 Q A [数学]矩形重叠
LeetCode-820 Q A [字典树]单词的压缩编码
LeetCode-695 Q A [DFS]岛屿的最大面积
LeetCode-543 Q A [树]二叉树的直径
LeetCode-445 Q A [链表]两数相加II
LeetCode-409 Q A [哈希表]最长回文串
LeetCode-322 Q A [DP]零钱兑换
LeetCode-300 Q A [DP]最长上升子序列
LeetCode-289 Q A [数组]生命游戏
LeetCode-263 Q A [数学]丑数
LeetCode-258 Q A [数学]各位相加
LeetCode-256 Q A [DP]粉刷房子
LeetCode-234 Q A [链表/双指针]链表找中点使用快慢指针,反转对比即可
LeetCode-231 Q A [数学/位运算]&
LeetCode-206 Q A [链表]反转逻辑画个图就清晰了
LeetCode-203 Q A [链表]头结点单独考虑
LeetCode-202 Q A [数学/哈希表]巧妙运用HashSet
LeetCode-189 Q A [数组]反转
LeetCode-183 Q A [SQL]not in
LeetCode-175 Q A [SQL]left join
LeetCode-171 Q A [数学]阶乘后的零
LeetCode-171 Q A [数学]简单进制问题
LeetCode-169 Q A [数组/分治/哈希]分治关键是找到base case
LeetCode-168 Q A [数学]简单进制问题
LeetCode-136 Q A [哈希表/位运算]^
LeetCode-125 Q A [双指针/字符串]
LeetCode-122 Q A [数组/贪心]买卖股票的最佳时机 II
LeetCode-121 Q A [数组]
LeetCode-119 Q A [数组]杨辉三角
LeetCode-118 Q A [数组]杨辉三角
LeetCode-112 Q A [树/DFS]用减法而不是加法
LeetCode-111 Q A [树/DFS/BFS]二叉树的最小深度
LeetCode-110 Q A [树/DFS]平衡二叉树 树的高度老忘记+1
LeetCode-108 Q A [树/DFS/二分法]left+(right-left)/2
LeetCode-107 Q A [树/BFS]层次遍历用队列
LeetCode-104 Q A [树/DFS]二叉树深度=Max(左右子树深度)+1
LeetCode-102 Q A [树/BFS]同下
LeetCode-101 Q A [树/DFS/BFS]造个树和自己比
LeetCode-100 Q A [树/DFS]简单的DFS,处理好根节点,然后左右孩子递归即可
LeetCode-92 Q A [链表]反转链表II
LeetCode-70 Q A [DP]关键点在“每次你可以爬 1 或 2 个台阶”
LeetCode-69 Q A [数组/二分查找]不用long的话就变形防止溢出
LeetCode-67 Q A [数学/字符串]转数字做会溢出/字符串补全0之后再反向按位加
LeetCode-66 Q A [数组]关键还是%=10啦
LeetCode-58 Q A [字符串]split作弊/不作弊就乖乖从后往前遍历
LeetCode-53 Q A [数组/DP/分治]暴力一时爽一直暴力一直爽/DP重点是搞出状态转移方程/为啥要分治我就不分治
LeetCode-38 Q A [字符串]StringBuilder
LeetCode-35 Q A [数组/二分查找]注意边界
LeetCode-28 Q A [字符串/双指针]重点是i-j
LeetCode-27 Q A [数组/双指针]法一很简单,法二交换再释放有点意思
LeetCode-20 Q A [栈/字符串]递归结构的问题用栈解决方便的一批
LeetCode-13 Q A [数学/字符串]HashMap
LeetCode-9 Q A [数学]倒转数字比较即可(不转换为字符串🙅‍♀️)
LeetCode-8 Q A [数学/字符串]字符串转换整数 (atoi)
LeetCode-1 Q A 暴力一时爽 还是用哈希表吧
题号 注意点
PATA1042 [模拟]取模问题
PATA1046 [模拟]数组预处理
PATA1065 [模拟]溢出
PATA1002 [模拟]a[e]=k e幂次 k系数
PATA1009 [模拟]一个数组能干的事没必要开俩数组
PATB1036 [图形打印]用round记得round((double)N/2)强制类型转换一下 四舍五入还可以用N/2+N%2
PATB1004 [查找元素]边输入边比较
PATB1028 [查找元素]特判/max的初始值设最小值,min的初始值设最大值
PATB1027 [图形打印]奇偶/floor ceil
PATA1031 [图形打印]多举几个例子找规律
PATB1022 [进制转换]十进制转D进制/除基求余法/dowhile
PATB1037 [进制转换]单位之间的关系可用常量来表示 方便计算
PATA1027 [进制转换]十进制有范围 可简化进制转换写法
PATA1058 [进制转换]进制加法 carry
PATB1021 [字符串处理]char当数字用的时候别忘记-'0'
PATB1031 [字符串处理]使用数组来建立映射关系会让代码简洁很多
PATB1014/PATA1061 [字符串处理]找到了之后记得break 想找的是第一个匹配的 不break就错啦
PATB1024/PATA1073 [字符串处理]找对位置关系就不难
PATB1048 [字符串处理]结果串ans一定要初始化为空字符串,不然会出现奇奇怪怪的结果
char转int char-'0' int转char int+'0'
char A[101]={0}是将整个字符串初始化为空值
memset(A, '0', sizeof(A))是把整个字符串初始化为“000....000”
PATA1005 [字符串处理]12345如果想从前往后输出直接用递归就好了
PATA1077 [字符串处理]C++如何输入含空格的字符串
用getline之前要记得用getchar把换行符吸收掉~
PATB1015/PATA1062 [排序]重点在分类 分好类就不难了
PATA1012 [排序]排序的问题记得要单独处理第一名 第一名之后的人的名次是他前面的人数+1(分数相同时排名和上一个人的排名相同) 这一题now用的巧妙
PATA1028 [排序]char a[10]="hello";char b[10]="hello" a不等于b哦,a和b都是地址,判断两个字符串是否相等用strcmp
PATA1055 [排序]预处理可以显著降低查询的复杂度
PATB1029/PATA1084 [散列]hashtable长度一般直接设置为ASCII码的个数128即可
PATB1033 [散列]字符串输入可能为空 所以不能用cin 要用getline(坑了我半小时886)
bool数组初始值默认是false,全置为true用memset,直接bool flag[10]={true}只有第一个是true哦
int a[10]={0}可以全置为0,={1}无法全置为1
PATB1038 [散列]用cincout会超时,要用scanfprintf
PATB1039/PATA1092 [散列]change函数有点意思
PATB1042 [散列]输入有空格别用cin啊啊啊用getline(这次反应的快一点了)
PATA1050 [散列]这题用string会有两个测试点过不了 很奇怪 char[]没问题
PATA1048 [散列]i和m-i
PATA1037 [贪心]第二个循环注意是i和j 不要都写成i了
PATA1038 [贪心]string.erase/cmp是关键/前导0不确定个数 while别写成if
PATB1030/PATA1085 [二分]upper_bound返回的是指针,想获得下标要减去数组首地址
PATA1044 [二分]设sum[i]表示A[1]到A[i]的和,然后再求任意区间的连续序列和就很方便了。例如A3+A4+A5=sum[5]-sum[2]
upper_bound
PATB1040/PATB1045 “假如序列的每一位所需要计算的值都可以通过该位左右两侧的结果计算得到,那么久可以考虑所谓的[左右两侧的结果]是否能通过递推进行预处理得到”
int INF=0x3fffffff 一个很大的数
B1045如果最后不换行就会有一个测试点格式错误 注意一哈
PATA1008 [数学问题]now = to别忘记了
PATA1081 [数学问题]分数相加 规定只有分子可以为负 在输出和做运算时要注意绝对值的问题 算最大公约数也是算分子分母绝对值的最大公约数
顺便记一下,为了防止溢出不用lcm=a*b/gcd,用lcm=a/gcd*b(lcm最小公倍数 gcd最大公约数)
PATA1039 [stl-vector]用到了hash,将字符串转换成数字作为下标
PATA1047 [stl-vector]数据范围很大的情况一般最好用char数组来存放数据,用string很容易超时
这一题用cincout也会超时
PATA0163 [stl-set]统计数量的时候,很多情况下可以置初值为max,然后碰到不符合条件的就减一
printf("%.1f%")可输出百分比,如果要紧跟一个百分号的话再自己加一个%
st.find(value)!=st.end()为true就表示在st中找到了value
PATA1054 [stl-map]善用find(),贼方便
PATA1071 [stl-map]千万不要用cin输入string,因为输入有空格,要用getline(cin,string)啦
PATA1052 [链表]静态链表/第三个参数注意别写成next了,已经排好序了所以直接输出下一个结点的address即可/记得特判
PATA1103 [DFS]感觉最重要的一步还是预处理,以及字典序的要求可以直接靠从最大值开始遍历来解决