经验:等有了大概的思路再去敲代码,一定要注意保证思路的正确。
否则会浪费大量的时间修改代码,再重新寻找思路。
88 合并两个有序数组
以后有机会可以看一下其他解法,这里给出最简略的解法。
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int index2=0;
for(int i=m;i<m+n;i++){
nums1[i]=nums2[index2++];
}
Arrays.sort(nums1);
}
}
506 相对名次
较易,主要是找规律,这里找规律浪费了很多时间,主要是没有明确的思路就开始提交代码。
sort
为排序后的数组。score
为原数组,如果sort[i] == score[j]
时,则代表找到该名次在原始数组的初始位置,这个逻辑是一个重点。
class Solution {
public String[] findRelativeRanks(int[] score) {
int []sort=Arrays.copyOf(score,score.length);
Arrays.sort(sort);
String[] ret=new String[score.length];
int index=1;
//i 控制每一轮的名次。
for(int i=sort.length-1;i>=0;i--){
for(int j=0;j<score.length;j++) {
if (sort[i] == score[j]) {
if (i == sort.length-1) {
ret[j] = "Gold Medal";
} else if (i == sort.length-2) {
ret[j] = "Silver Medal";
} else if (i == sort.length-3) {
ret[j] = "Bronze Medal";
} else {
ret[j] = 3+index + "";
index++;
}
break;
}
}
}
return ret;
}
}