本題的想法比較簡單,先將這個陣列排序,遍歷數組,找到目前的和前一個相同的直接輸出就好了。沒找到輸出-1.
注意:這個方法要注意循環的時候下標要從1開始哦,不然會報數組下標異常滴。
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型一维数组 * @return int整型 */ public int duplicate (int[] numbers) { // write code here Arrays.sort(numbers); for(int i = 1 ; i < numbers.length; i++) if(numbers[i] == numbers[i - 1]) return numbers[i]; return -1; } }
這個題目有點難度。仔細讀題發現了一個重要條件,這個二位數組行和列都是遞增的,也就意味著左上最小,右下最大,並且左下元素大於它上方的元素,小於它右方的元素,右上元素與之相反。
根據這個規律,我們可以從左下出發分情況往上或右進行找,同時要先判斷一下特殊情況哦。具體細節上代碼。
public class Solution { public boolean Find(int target, int [][] array) { //优先判断特殊 if(array.length == 0) return false; int n = array.length; if(array[0].length == 0) return false; int m = array[0].length; //从最左下角的元素开始往左或往上 for(int i = n - 1, j = 0; i >= 0 && j < m; ){ //元素较大,往上走 if(array[i][j] > target) i--; //元素较小,往右走 else if(array[i][j] < target) j++; else return true; } return false; } }
本題的替換空格,思路還是比較簡單的。
我們遍歷字串把它存到一個臨時字符數組裡,在遍歷的時候直接判斷是否為空,如果是直接加進‘ ’三個字符,最後輸出即可。
注意:臨時數組的大小,設定為字串長度的3倍,剛剛好,假設字串全是空格,也可以滿足。同時也要注意字串的相關方法的運用。
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ public String replaceSpace(String s) { int length = s.length(); char[] array = new char[length * 3]; int index = 0; for (int i = 0; i < length; i++) { char c = s.charAt(i); if (c == ' ') { array[index++] = '%'; array[index++] = '2'; array[index++] = '0'; } else { array[index++] = c; } } String newStr = new String(array, 0, index); return newStr; } }
以上是Java數組、二維數組及替換空格問題怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!