Idea ini soalan adalah agak mudah Pertama, susun tatasusunan, lalui tatasusunan, dan cari keluaran langsung semasa yang sama dengan yang sebelumnya. Output tidak ditemui -1.
Nota: Dalam kaedah ini, sila ambil perhatian bahawa subskrip mesti bermula dari 1 apabila gelung, jika tidak, pengecualian subskrip tatasusunan akan dilaporkan.
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; } }
Soalan ini agak sukar. Selepas membaca soalan dengan teliti, saya mendapati satu syarat penting Baris dan lajur tatasusunan dua digit ini semakin meningkat, yang bermaksud bahawa bahagian kiri atas adalah yang paling kecil dan bahagian kanan bawah adalah yang terbesar unsur di atasnya dan lebih kecil daripada unsur di sebelah kanan Unsur atas sebelah kanan Sebaliknya.
Mengikut peraturan ini, kita boleh mulakan dari kiri bawah dan mencari ke atas atau kanan bergantung kepada keadaan Pada masa yang sama, kita mesti menilai situasi istimewa terlebih dahulu. Butiran khusus pada kod.
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; } }
Soalan ini Idea untuk menggantikan ruang agak mudah.
Kami melintasi rentetan dan menyimpannya ke dalam tatasusunan aksara sementara Apabila melintasi, kami terus menentukan sama ada ia kosong Jika ia ditambah secara langsung dengan tiga aksara "%20", kemudian keluarkannya.
Nota: Saiz tatasusunan sementara ditetapkan kepada 3 kali panjang rentetan, yang betul-betul tepat dengan mengandaikan bahawa rentetan itu adalah semua ruang, ia juga boleh dipenuhi. Pada masa yang sama, anda juga harus memberi perhatian kepada penggunaan kaedah berkaitan rentetan.
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; } }
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah tatasusunan Java, tatasusunan dua dimensi dan menggantikan ruang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!