欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java數(shù)據(jù)結(jié)構(gòu)之Map與Set專(zhuān)篇講解

 更新時(shí)間:2022年01月27日 16:05:25   作者:/少司命  
這篇文章通過(guò)實(shí)例面試題目來(lái)講解Java中Map和Set之間的關(guān)系,具有很好的參考價(jià)值,Map與Set在面試中經(jīng)常會(huì)遇到。一起跟隨小編過(guò)來(lái)看看吧

①只出現(xiàn)一次的數(shù)字

給定一個(gè)非空整數(shù)數(shù)組,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。

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

首相我們可能會(huì)想到用位運(yùn)算直接解決,但我們也可以用hash色條解決。

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

hashset也已輕松解決這個(gè)問(wèn)題,將整個(gè)數(shù)組中的元素放入set,因?yàn)橹怀霈F(xiàn)一次的數(shù)字只有一次,所以我們將多次出現(xiàn)相同的數(shù)字移除

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;
 
    }

②寶石與石頭

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

字母區(qū)分大小寫(xiě),因此 "a" 和 "A" 是不同類(lèi)型的石頭。

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

這道題和第一道題一樣,這里是統(tǒng)計(jì)不同的個(gè)數(shù)。因?yàn)橐獏^(qū)分大小寫(xiě),所以我們將小寫(xiě)轉(zhuǎn)大寫(xiě),不影響我們做出判斷

 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;
    }

③壞鍵盤(pán)打字

舊鍵盤(pán)上壞了幾個(gè)鍵,于是在敲一段文字的時(shí)候,對(duì)應(yīng)的字符就不會(huì)出現(xiàn)。現(xiàn)在給出應(yīng)該輸入的一段文字、以及實(shí)際被輸入的文字,請(qǐng)你列出肯定壞掉的那些鍵。

輸入

7_This_is_a_test
_hs_s_a_es

輸出

7TI

這道題我們要分兩個(gè)set,一個(gè)setActual記錄真實(shí)打出的字母,一個(gè)setBroken統(tǒng)計(jì)壞掉的字母,判斷條件是符合的字母既不是包含setActual中已經(jīng)存在的,也不是setActual與setBroken相同的字母。主要是同時(shí)對(duì)比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);;
            }
        }
    }

④復(fù)制帶隨機(jī)指針的鏈表

給你一個(gè)長(zhǎng)度為 n 的鏈表,每個(gè)節(jié)點(diǎn)包含一個(gè)額外增加的隨機(jī)指針 random ,該指針可以指向鏈表中的任何節(jié)點(diǎn)或空節(jié)點(diǎn)。

構(gòu)造這個(gè)鏈表的 深拷貝。 深拷貝應(yīng)該正好由 n 個(gè) 全新 節(jié)點(diǎn)組成,其中每個(gè)新節(jié)點(diǎn)的值都設(shè)為其對(duì)應(yīng)的原節(jié)點(diǎn)的值。新節(jié)點(diǎn)的 next 指針和 random 指針也都應(yīng)指向復(fù)制鏈表中的新節(jié)點(diǎn),并使原鏈表和復(fù)制鏈表中的這些指針能夠表示相同的鏈表狀態(tài)。復(fù)制鏈表中的指針都不應(yīng)指向原鏈表中的節(jié)點(diǎn)。

例如,如果原鏈表中有 X 和 Y 兩個(gè)節(jié)點(diǎn),其中 X.random --> Y 。那么在復(fù)制鏈表中對(duì)應(yīng)的兩個(gè)節(jié)點(diǎn) x 和 y ,同樣有 x.random --> y 。

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

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

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);
 
 
    }

到此這篇關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之Map與Set專(zhuān)篇講解的文章就介紹到這了,更多相關(guān)Java Map Set內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Exception 捕獲和顯示實(shí)例詳解

    Java Exception 捕獲和顯示實(shí)例詳解

    這篇文章主要介紹了Java Exception 捕獲和顯示實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • SpringBoot如何根據(jù)目錄結(jié)構(gòu)生成API接口前綴

    SpringBoot如何根據(jù)目錄結(jié)構(gòu)生成API接口前綴

    這篇文章主要介紹了SpringBoot如何根據(jù)目錄結(jié)構(gòu)生成API接口前綴,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 關(guān)于elcipse 安裝lombok插件解決 @Slf4j 等找不到log變量問(wèn)題

    關(guān)于elcipse 安裝lombok插件解決 @Slf4j 等找不到log變量問(wèn)題

    這篇文章主要介紹了關(guān)于elcipse 安裝lombok插件解決 @Slf4j 等找不到log變量問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Spring Boot兩種配置文件properties和yml區(qū)別

    Spring Boot兩種配置文件properties和yml區(qū)別

    這篇文章主要為大家介紹了java面試中常見(jiàn)問(wèn)到的Spring Boot兩種配置文件properties和yml區(qū)別解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Java7和Java8中的ConcurrentHashMap原理解析

    Java7和Java8中的ConcurrentHashMap原理解析

    這篇文章主要介紹了Java7和Java8中的ConcurrentHashMap原理解析,對(duì)ConcurrentHashMap感興趣的讀者,一定要好好看一下
    2021-04-04
  • IDEA+Maven打JAR包的兩種方法步驟詳解

    IDEA+Maven打JAR包的兩種方法步驟詳解

    Idea中為一般的非Web項(xiàng)目打Jar包是有自己的方法的,下面這篇文章主要給大家介紹了關(guān)于IDEA+Maven打JAR包的兩種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 學(xué)習(xí)C語(yǔ)言對(duì)后期java有幫助嗎

    學(xué)習(xí)C語(yǔ)言對(duì)后期java有幫助嗎

    在本篇文章里小編給大家整理的是一篇關(guān)于學(xué)習(xí)C語(yǔ)言對(duì)后期java有幫助嗎的基礎(chǔ)文章,有興趣的朋友們可以參考下。
    2020-11-11
  • Spring中的@Value和@PropertySource注解詳解

    Spring中的@Value和@PropertySource注解詳解

    這篇文章主要介紹了Spring中的@Value和@PropertySource注解詳解,@PropertySource:讀取外部配置文件中的key-value保存到運(yùn)行的環(huán)境變量中,本文提供了部分實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2023-11-11
  • java服務(wù)自動(dòng)停止原因查找方式

    java服務(wù)自動(dòng)停止原因查找方式

    這篇文章主要介紹了java服務(wù)自動(dòng)停止原因查找方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringBoot之瘦身部署問(wèn)題

    SpringBoot之瘦身部署問(wèn)題

    這篇文章主要介紹了SpringBoot之瘦身部署問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評(píng)論