Ich habe eine neue Kolumne eröffnet, um meine täglichen Tests aufzuzeichnen und auch das tägliche Lernen zur Gewohnheit zu machen. Ich freue mich darauf, nach einem Jahr bei mir selbst zu bleiben!
1. Thema
Suchen Sie bei einem gegebenen ganzzahligen Array nums
und einem ganzzahligen Zielwert die beiden Ganzzahlen , deren Summe der Zielwert target
im Array ist , und geben Sie deren Array-Indizes zurück.target
Sie können davon ausgehen, dass es für jede Eingabe nur eine Antwort gibt. Allerdings darf dasselbe Element im Array in der Antwort nicht wiederholt vorkommen.
Sie können die Antworten in beliebiger Reihenfolge zurückgeben.
Beispiel 1:
Eingabe: nums = [2,7,11,15], Ziel = 9 Ausgabe: [0,1] Erläuterung: Da nums[0] + nums[1] == 9 ist, gebe ich [0, 1] zurück.
Beispiel 2:
Eingabe: Nums = [3,2,4], Ziel = 6 Ausgabe: [1,2]
Beispiel 3:
Eingabe: Nums = [3,3], Ziel = 6 Ausgabe: [0,1]
Zweitens: Denkanalyse
Manche Menschen verlieben sich, manche fahren nachts, um das Meer zu sehen, und manche können das erste Problem von LeetCode nicht lösen.
Ich bin es (°̥̥̥̥̥̥̥̥o°̥̥̥̥̥̥̥̥)
Aber es ist in Ordnung, „Deliberate Practice“ sagte gut, wir müssen unsere eigenen Mängel finden, das ist unser Feedback, und es dann stärken, nach ein paar Zyklen ist es für uns schwierig, uns nicht zu verbessern.
Ich las zuerst die Antwort, fuhr dann mit dem Debuggen fort und schrieb sie schließlich auf.
Ohne weitere Umschweife, hier ist mein Denkprozess:
Da wir die Summe zweier Zahlen suchen, müssen wir zunächst zwei Variablen i und j zum Durchlaufen des Arrays definieren.
Dann bin ich mehrmals auf die Grube getreten. Mir ist nicht aufgefallen, dass im Titel stand: „Dasselbe Element im Array darf in der Antwort nicht wiederholt vorkommen.“ (Das erinnert mich auch daran, dass es sehr wichtig ist, die Fragen sorgfältig zu lesen, wenn die Fragen stellen ! )
Da es nicht wiederholt werden kann, lassen wir i direkt vom Index 0 aus traversieren und j von i+1 aus traversieren.
Schließlich ist es das Schreiben des Rückgabewerts. Es ist das erste Mal, dass ich auf das Problem der Rückgabe eines Arrays stoße, und es reicht aus, einmal auf die Grube zu treten. Schreiben Sie es jetzt einfach so: return new int [] {}; Wenn Sie später darauf stoßen, können Sie es ausführlich lernen.
3. Vollständiger Code
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i = 0 ;i<nums.length;i++ ){
for(int j = i+1 ; j< nums.length; j++){
if(nums[i]+nums[j]==target){
return new int[]{i,j};
}
}
}
return new int[]{0};
}
}
Das Obige ist der gesamte Inhalt dieses Blogs. Wenn es Mängel gibt, weisen Sie sie bitte darauf hin. Ich freue mich darauf, gemeinsam mit Ihnen Fortschritte zu machen!