この質問のアイデアは比較的簡単に言うと、まず配列をソートし、配列を走査して、前の出力と同じ現在の直接出力を見つけます。出力が見つかりません -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; } }
この質問は少し難しいです。質問をよく読むと、重要な条件が見つかりました。この 2 桁の配列の行と列が増加しています。これは、左上の要素が最小で、右下の要素が最大であることを意味します。左下の要素が要素よりも大きいことを意味します。その上にある、右側の要素より小さい要素、その反対側に右上の要素。
このルールに従えば、左下からスタートし、状況に応じて上または右に探索することができますが、同時に特殊な状況を最初に判断する必要があります。コードの具体的な詳細。
#コードと結果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 文字を直接追加すると、最終的に空になります。出力。
注: 一時配列のサイズは文字列の長さの 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 配列、2 次元配列、およびスペースの置換の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。