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

Java真題實練掌握哈希表的使用

 更新時間:2022年07月21日 09:30:38   作者:風鈴聽雨~  
哈希表是一種根據(jù)關鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過把關鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點復雜,我想我舉個例子你就會明白了,最典型的的例子就是字典

1.多數(shù)元素

題目描述

思路詳解

這個思路比較簡單,先排序,排序過后遍歷如果后一個等于前一個輸出就好

代碼與結(jié)果

class Solution {
    public int majorityElement(int[] nums) {
        Arrays.sort(nums);
        return nums[nums.length / 2];
    }
}

2.數(shù)組中的k-diff數(shù)對

題目描述

思路詳解

這里我們采用排序和雙指針的方法。

我們首先把數(shù)組進行排序,然后利用前后兩個指針遍歷數(shù)組,找出符合條件的組合。

注意:這里我們我們要注意結(jié)果的重復,也要注意兩個指針前進的條件。

代碼與結(jié)果

class Solution {
    public int findPairs(int[] nums, int k) {
        Arrays.sort(nums);
        int n = nums.length, y = 0, res = 0;
        for (int x = 0; x < n; x++) {
            if (x == 0 || nums[x] != nums[x - 1]) {
                while (y < n && (nums[y] < nums[x] + k || y <= x)) {
                    y++;
                }
                if (y < n && nums[y] == nums[x] + k) {
                    res++;
                }
            }
        }
        return res;
    }
}

3.缺失的第一個正數(shù)

題目描述

思路詳解

這一題屬于比較困難的題目。

我們首先想到的就是排序然后遍歷,可是這違背了題目時間復雜度是常數(shù)的要求。

那么我們用哈希表進行存儲遍歷呢,顯然這也超出了時間復雜度的限制。

小編也是參考了題解,現(xiàn)在就來用自己的話說說這一題的做法吧.

對數(shù)組進行遍歷,對于遍歷到的數(shù) x,如果它在[1,N] 的范圍內(nèi),那么就將數(shù)組中的第x−1 個位置(注意:數(shù)組下標從 0 開始)打上「標記」。在遍歷結(jié)束之后,如果所有的位置都被打上了標記,那么答案是N+1,否則答案是最小的沒有打上標記的位置加 1。

這里是采用了仿哈希表的結(jié)構(gòu)。

代碼與結(jié)果

class Solution {
    public int firstMissingPositive(int[] nums) {
        int n = nums.length;
        for (int i = 0; i < n; ++i) {
            if (nums[i] <= 0) {
                nums[i] = n + 1;
            }
        }
        for (int i = 0; i < n; ++i) {
            int num = Math.abs(nums[i]);
            if (num <= n) {
                nums[num - 1] = -Math.abs(nums[num - 1]);
            }
        }
        for (int i = 0; i < n; ++i) {
            if (nums[i] > 0) {
                return i + 1;
            }
        }
        return n + 1;
    }
}

到此這篇關于Java真題實練掌握哈希表的使用的文章就介紹到這了,更多相關Java哈希表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Springboot以Repository方式整合Redis的方法

    Springboot以Repository方式整合Redis的方法

    這篇文章主要介紹了Springboot以Repository方式整合Redis的方法,本文通過圖文并茂實例詳解給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Java中Console對象實例代碼

    Java中Console對象實例代碼

    這篇文章主要介紹了Java中Console對象實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 一篇文章帶你從java字節(jié)碼層理解i++和++i

    一篇文章帶你從java字節(jié)碼層理解i++和++i

    這篇文章帶你從java字節(jié)碼層理解i++和++i,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-09-09
  • SpringBoot實現(xiàn)PDF添加水印的示例

    SpringBoot實現(xiàn)PDF添加水印的示例

    本文主要介紹了SpringBoot實現(xiàn)PDF添加水印的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • 利用java開發(fā)簡易版掃雷游戲

    利用java開發(fā)簡易版掃雷游戲

    這篇文章主要介紹了利用java開發(fā)一個丐版掃雷游戲,喜歡玩掃雷的小伙伴們一定要試試哦,對正在學習java開發(fā)的小伙伴們也有一定幫助,需要的朋友可以參考下
    2021-04-04
  • swagger文檔增強工具knife4j使用圖文詳解

    swagger文檔增強工具knife4j使用圖文詳解

    這篇文章主要介紹了swagger文檔增強工具knife4j使用詳解,想要使用knife4j非常簡單,只要在Springboot項目中引入knife4j的依賴即可,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • java解析xml匯總_動力節(jié)點Java學院整理

    java解析xml匯總_動力節(jié)點Java學院整理

    這篇文章主要介紹了java解析xml匯總_動力節(jié)點Java學院整理的相關資料,需要的朋友可以參考下
    2017-07-07
  • Java?超詳細講解十大排序算法面試無憂

    Java?超詳細講解十大排序算法面試無憂

    這篇文章主要介紹了Java常用的排序算法及代碼實現(xiàn),在Java開發(fā)中,對排序的應用需要熟練的掌握,這樣才能夠確保Java學習時候能夠有扎實的基礎能力。那Java有哪些排序算法呢?本文小編就來詳細說說Java常見的排序算法,需要的朋友可以參考一下
    2022-04-04
  • 徹底理解Spring注解@Autowired實現(xiàn)原理

    徹底理解Spring注解@Autowired實現(xiàn)原理

    這篇文章主要為大家詳細的介紹了Spring注解@Autowired實現(xiàn)的原理,縝密的邏輯分析,實踐應用示例操作說明,讓大家徹底的理解Spring注解@Autowired背后實現(xiàn)原理
    2022-03-03
  • Java算法實現(xiàn)調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)之前的講解

    Java算法實現(xiàn)調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)之前的講解

    今天小編就為大家分享一篇關于Java算法實現(xiàn)調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)之前的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論