?第一題
代碼
package Competition.The387Competitioin;public class Demo1 {public static void main(String[] args) {}public int[] resultArray(int[] nums) {int ans[]=new int[nums.length];int arr1[]=new int[nums.length];int arr2[]=new int[nums.length];if(nums.length<=2)return nums;int i=0;int j=0;int k=0;arr1[i++]=nums[k++];System.out.println(arr1[i-1]);arr2[j++]=nums[k++];System.out.println(arr1[j-1]);while (k<nums.length){if(arr1[i-1]>arr2[j-1]){arr1[i++]=nums[k++];System.out.println(arr1[i-1]);}else{arr2[j++]=nums[k++];}}int index_i=0;for(int c=0;c<i;c++){ans[index_i++]=arr1[c];}for(int c=0;c<j;c++){ans[index_i++]=arr2[c];}return ans;}
}
評價
敲代碼的時候,我在這里放了一個小錯誤,
if(arr1[i-1]>arr2[j-1]){這個,我寫成了arr1[i-1]>arr1[j-1],手寫的太快了,debug了,所以寫的不快,我真該死唉
第二題
代碼
package Competition.The387Competitioin;public class Demo2 {public static void main(String[] args) {}public int countSubmatrices(int[][] grid, int k) {int m = grid.length;int n = grid[0].length;int ans = 0;int[][] prefixSum = new int[m + 1][n + 1];for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {prefixSum[i][j] = prefixSum[i - 1][j] + prefixSum[i][j - 1] - prefixSum[i - 1][j - 1] + grid[i - 1][j - 1];if(prefixSum[i][j]<=k)ans++;}System.out.println();}return ans;}}
評價:這個感覺很好,直接無腦寫
第三題
代碼
package Competition.The387Competitioin;public class Demo3 {public static void main(String[] args) {}public int minimumOperationsToWriteY(int[][] grid) {int n = grid.length;int m = grid[0].length;int ynumber[]=new int[3];int otherNumber[]=new int[3];int sumy=0;int sumOther=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(i<n/2&&i==j){ynumber[grid[i][j]]++;sumy++;continue;}if(i< n/2&&j==n-i-1){ynumber[grid[i][j]]++;sumy++;continue;}if(i>n/2&&j==n/2){ynumber[grid[i][j]]++;sumy++;continue;}otherNumber[grid[i][j]]++;sumOther++;}}sumOther--;otherNumber[grid[n/2][n/2]]--;sumy++;ynumber[grid[n/2][n/2]]++;System.out.println("sumy:"+sumy);System.out.println("sunOther:"+sumOther);for(int i=0;i<3;i++){System.out.println(i);System.out.println("y:"+ynumber[i]);System.out.println("o:"+otherNumber[i]);}int ans=Integer.MAX_VALUE;for(int i=0;i<3;i++){for(int j=0;j<3;j++){if(i==j)continue;System.out.println(ans);ans=Math.min(ans,sumy-ynumber[i]+sumOther-otherNumber[j]);}}return ans;}
}
評價
還是第一題的毛病,首先題目寫的太快了,剛開始沒有想好就動代碼,本來寫成一段一段的,后面重新整個放在一起了,接下來就是發現我grid[n/2][n/2]多次利用了,我沒有發現,導致我值不對賬,最后通過調試發現了bug
總評
好久沒有打周賽了,最近無聊的時候會力扣復檢,都在背八股文,加油!,劍指和top100同時進行中ing