283问题Java版本,以及关于算法刷题和疑问
来源:3-3 在LeetCode上解决第一个问题 Move Zeros

qq_慕莱坞4316410
2023-09-25
public List<Integer> moveZeros(List<Integer> arrayList){
List<Integer> newList = new ArrayList<>();
//这是第一个循环{处理将非0元素提取出来}
for (Integer integer : arrayList) {
if (integer != 0)
newList.add(integer);
}
System.out.println(newList);
//这是第二个循环{将非0元素替换到最前位置}
for(int i = 0;i<newList.size();i++){
arrayList.set(i,newList.get(i)); //替换元素
}
//然后将后续的元素替换成0
for(int i = newList.size(); i<arrayList.size(); i++){
arrayList.set(i,0);
}
return arrayList;
}
上面是Java版本的283问题的代码求解,但是老师跟着老师学了很长一段时间了,总觉得没有掌握要领,很多简单的问题需要看完老师将的思路分析后才知道代码怎么写,自己拿到一个问题,总觉得不是想得偏离方向了,完全没想到还能这样解决问题,而且因为工作的原因很多时候刷题的时候思路清晰,但是工作会用到JDK写好的api,所以不需要自己写算法逻辑,过了几个月然后思路又是一片混乱,感觉是不是学习方法错误啊,之前也问过老师,感觉效果不是很明显,现在面试都会问算法,感觉算法这块一直很脆弱
写回答
1回答
-
liuyubobobo
2025-02-05
我个人唯一的建议是多练,除此之外我确实没有别的更有效的建议了。
我的具体联系建议是:
1)每天做力扣的每日一题;
2)周末做里扣的周赛问题(通常四个问题)
3)不管是每日一题,还是周赛问题,遇到困难的问题,可以看一看问题,觉得太难,允许自己跳过,不要死磕难题
4)对于简单和中等的问题,力扣上有大量的题解,把他们搞明白。
整体这个练习量我觉得每天不回话太多时间。半个小时左右应该能搞定。让自己积累半年甚至一年的时间再回头看,通常会有质的提高的。整体算法问题,简单和中等的问题就那么几类,并不复杂。对于大多数面试,其实能回答清楚简单和中等问题,在我看来,算法就算过关了。当然会有人算法特别好,但是既然算法不是你的优势,你就不应该和他们拼算法,过关即可,找到自己其他方面的优势。
继续加油!:)
00