91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java數據結構中的Map與Set該怎么理解

發布時間:2022-02-04 13:22:57 來源:億速云 閱讀:104 作者:柒染 欄目:開發技術

這篇文章主要為大家分析了Java數據結構中的Map與Set該怎么理解的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“Java數據結構中的Map與Set該怎么理解”的知識吧。

①只出現一次的數字

給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。

輸入: [2,2,1]
輸出: 1

首相我們可能會想到用位運算直接解決,但我們也可以用hash色條解決。

Java數據結構中的Map與Set該怎么理解

public int singleNumber(int[] nums) {
        int single = 0;
        for (int num : nums) {
            single ^= num;
        }
        return single;
    }

hashset也已輕松解決這個問題,將整個數組中的元素放入set,因為只出現一次的數字只有一次,所以我們將多次出現相同的數字移除

public int singleNumber(int[] nums){
 
        HashSet<Integer> set = new HashSet<>();
        for (int i = 0; i < nums.length; i++){
            if (set.contains(nums[i])){
                set.remove(nums[i]);
            }else {
                set.add(nums[i]);
            }
        }
        for (int i = 0; i < nums.length; i++){
            if (set.contains(nums[i])){
                return nums[i];
            }
        }
        return -1;
 
    }

②寶石與石頭

給你一個字符串 jewels 代表石頭中寶石的類型,另有一個字符串 stones 代表你擁有的石頭。 stones 中每個字符代表了一種你擁有的石頭的類型,你想知道你擁有的石頭中有多少是寶石。

字母區分大小寫,因此 "a" 和 "A" 是不同類型的石頭。

輸入:jewels = "aA", stones = "aAAbbbb"
輸出:3

這道題和第一道題一樣,這里是統計不同的個數。因為要區分大小寫,所以我們將小寫轉大寫,不影響我們做出判斷

 public int numJewelsInStons(String jewels,String stons){
        stons.toUpperCase(Locale.ROOT).toCharArray();
 
        HashSet<Character> set = new HashSet<>();
 
        for (int i = 0; i < jewels.length(); i++){
            set.add(jewels.charAt(i));
        }
 
        int count = 0;
        for (char ch:stons.toCharArray()) {
            if(set.contains(ch)){
                count++;
            }
        }
        return count;
    }

③壞鍵盤打字

舊鍵盤上壞了幾個鍵,于是在敲一段文字的時候,對應的字符就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。

輸入

7_This_is_a_test
_hs_s_a_es

輸出

7TI

這道題我們要分兩個set,一個setActual記錄真實打出的字母,一個setBroken統計壞掉的字母,判斷條件是符合的字母既不是包含setActual中已經存在的,也不是setActual與setBroken相同的字母。主要是同時對比setActual與setBroken。

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str1 = scan.nextLine();
        String str2 = scan.nextLine();
 
        HashSet<Character> setActual = new HashSet<>();
        for (char ch:str2.toUpperCase(Locale.ROOT).toCharArray()) {
            setActual.add(ch);
        }
        HashSet<Character> setBroken = new HashSet<>();
        for (char ch: str1.toUpperCase(Locale.ROOT).toCharArray()) {
            if(!setActual.contains(ch) && !setBroken.contains(ch)){
                setBroken.add(ch);
                System.out.print(ch);;
            }
        }
    }

④復制帶隨機指針的鏈表

給你一個長度為 n 的鏈表,每個節點包含一個額外增加的隨機指針 random ,該指針可以指向鏈表中的任何節點或空節點。

構造這個鏈表的 深拷貝。 深拷貝應該正好由 n 個 全新 節點組成,其中每個新節點的值都設為其對應的原節點的值。新節點的 next 指針和 random 指針也都應指向復制鏈表中的新節點,并使原鏈表和復制鏈表中的這些指針能夠表示相同的鏈表狀態。復制鏈表中的指針都不應指向原鏈表中的節點。

例如,如果原鏈表中有 X 和 Y 兩個節點,其中 X.random --> Y 。那么在復制鏈表中對應的兩個節點 x 和 y ,同樣有 x.random --> y 。

Java數據結構中的Map與Set該怎么理解

輸入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]

輸出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

Java數據結構中的Map與Set該怎么理解

Java數據結構中的Map與Set該怎么理解

Java數據結構中的Map與Set該怎么理解

Java數據結構中的Map與Set該怎么理解

class Node {
    int val;
    Node next;
    Node random;
 
    public Node(int val) {
        this.val = val;
        this.next = null;
        this.random = null;
    }
}
 
public Node copyRandomList(Node head){
        if (head == null) return null;
        HashMap<Node,Node> map = new HashMap<>();
        Node cur = head;
        while (cur != null){
            Node node = new Node(cur.val);
            map.put(cur,node);
            cur = cur.next;
        }
        cur = head;
        while (cur != null){
            map.get(cur).next = map.get(cur.next);
            map.get(cur).random = map.get(cur.random);
            cur = cur.next;
        }
        return map.get(head);
 
 
    }

關于“Java數據結構中的Map與Set該怎么理解”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江达县| 大冶市| 绵阳市| 藁城市| 秦皇岛市| 南昌市| 松溪县| 阳新县| 梁山县| 抚松县| 格尔木市| 贵州省| 富裕县| 六安市| 巴里| 长武县| 鱼台县| 紫金县| 报价| 寿光市| 景谷| 奉化市| 普兰县| 汪清县| 汉寿县| 玉林市| 库车县| 玉屏| 中阳县| 柏乡县| 育儿| 武隆县| 小金县| 蕲春县| 东乌珠穆沁旗| 会同县| 荥阳市| 安图县| 神农架林区| 咸丰县| 衡水市|