上周学习内容
马上蓝桥杯就要开始了,算法是让每一个码农都会头疼的项目,俗话说的好,算法熬发,我算是真的理解了,一道算法题可以看一个小时还是写不出,让人绝望,但无论如何还是要写的,因为现在的互联网行业已经不像从前了,现在竞争也越开越大了,而算法也对未来的面试以及工作中的开发起着重要的作用,所有还是要继续死磕算法,短期是为了在蓝桥杯比赛中取得好的成绩吧,下面是我对最近练的基础算法的一些记录吧!
这道题大概就是通过两个for循环遍历出数组中符合情况的两个数,当当找不到符合的情况的时候就返回res的默认值[];大概就是这样子吧,这道题也不是很难,接下来用代码实现一下吧.
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] res=new int[2];
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]+nums[j]==target){
res[0]=i;
res[1]=j;
break;
}
}
}
return res;
}
}
这道题我的理解是遍历数组中的元素,依次对照,通过if进行判断,如果相等的话就不会进入里面,进行操作,如果不相等的话就可以进入里面进行操作,把数组重新赋值到新数组里面,这样子就可以起到删除重复项的作用.觉得方法很巧妙.具有看代码吧
class Solution {
public int removeDuplicates(int[] nums) {
int index=0;
for(int i=0;i<nums.length;i++){
if(nums[i]!=nums[index]){
nums[index+1]=nums[i];
index++;
}
}
return index+1;
}
}
这道题说实话和上面的题简直不要一模一样,思路基本上一致,只不过是换个说法,结合上面的题,一起看看思路也许更加清晰,印象也会更深刻
class Solution {
public int removeElement(int[] nums, int val) {
if(nums==null||nums.length==0){
return 0;
}
int j=0;
for(int i=0;i<nums.length;i++){
if(nums[i]!=val){
nums[j]=nums[i];
j++;
}
}
return j;
}
}
继续学算法吧,算法确实是很难,还是要练呀,马上就要考试了,还有一个星期,考前的时间很宝贵,认真学习吧