算法題一(給定一個整數數組和一個目標值,請你在該數組中找出和為目標值的那兩個整數的索引)


之前朋友面試遇到的一道題,說是給定一個整數數組和一個目標值,請你在該數組中找出和為目標值的那兩個整數的索引,而且只能用一次循環。當時我就想在遍歷的時候保存它的差值,然后和后面的數字作比較。但是內會兒只是有思路,沒寫出來,今天抽時間用代碼實現了,話不多說,直接上代碼。

    public static int[] twoSum(int[] arrays, int target) {
        Map<Integer, Integer> map = new HashMap<>();//創建一個map
        for (int i = 0; i < arrays.length; i++) {
            int cha = target-arrays[i];
            if (map.containsKey(cha)){//拿插值和map中的鍵比較,會返回boolean值
                return new int [] {map.get(cha),i};//如果條件滿足,意味着找到數字了,通過get(key)方法獲得value。也就是該數字的下標
            }
            map.put(arrays[i],i);//保存到map中,數字作為鍵,下標作為值
        }

        throw new IllegalArgumentException("沒有找到!!!");
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM