
我要开始定新目标因为上学期一直在学Java、准备比赛寒假去学习网安了没有时间刷算法开学一周重新拾回算法打算挑战365天Leetcode上Knight坚持每天吃透2~3题我会每周做一次总结。第一周3月8号~3月14号这周可以说是试错周了每天的算法类型都是不重样的但是好多题目都是AI思考被AI带偏了现在改变思路先自己做一遍把思路写下来不会再找AI然后再重新自己写一遍总结题型、核心思路、易错点。例子题目414.第三大的数题型- 数组、找第K大的元素、简单模拟- 难度简单核心思路- 用3个变量保存第一大、第二大、第三大- 遍历数组只更新这3个数- 比第一大还大三、二、一依次往后挪- 比第二大、比第一小三、二往后挪- 比第三大、比第二小更新第三大- 有第三大就返回没有就返回第一大易错点- 必须去重相同数字不算多次- 初始值要用极小值不能用0- 最后要判断数组是否真的有3个不同数- 不要用排序效率低且容易踩坑代码class Solution { public int thirdMax(int[] nums) { long first Long.MIN_VALUE; long second Long.MIN_VALUE; long third Long.MIN_VALUE; for(int num : nums){ if(third num || second num || first num){ continue; } if(num first){ third second; second first; first num; } else if(num second num first){ third second; second num; } else if(num third num second){ third num; } } if(third Long.MIN_VALUE){ return (int)first; } else{ return (int)third; } } }