當前位置: 妍妍網 > 碼農

30歲男人最無聲的炫富,網友:老婆18歲~

2024-05-04碼農

平時,我們總能聽到各種各樣的炫耀,有的直白,有的含蓄。

而我在網路上沖浪時,就發現了一網友的發帖:「30歲+男人最無聲的炫富是什麽?」最無聲的炫富?

我猜肯定不是物質上的。

果不其然,一網友直接回復,「老板,這次理發幫我頭發打薄一點。」程式設計師聽了狂喜,這是大家30+後最希望的吧。

接著是「洗腳自由」。啊這,確實讓人羨慕。

還有的網友來了一句,「老婆18歲」。不愧是你啊,但是也確實,作為一個男人來說。

大多數網友的回答,還是:「父母身體健康,有個老婆,不一定漂亮、錢多,但是愛你,支持你,一丫一小、粗茶淡飯、衣食無憂。」借你吉言,這裏也祝福大家。

看完大家的炫富,每個人都想的不一樣。但我覺得健康的家人,和睦的家庭,簡單 而幸福的生活,這才是真正意義上的炫富吧。那麽大家又是怎麽看呢?

下面分享一道大廠的演算法題

今日演算法題,來自LeetC ode的第41題:缺失的第一個正數,很多 大廠都考過,下面是我的演算法思路及實作,讓我們來看看吧。

# 缺失的第一個正數

演算法題目

給你一個未排序的整數陣列,請你找出其中沒有出現的最小的正整數。

引言

在編程和演算法設計中,尋找未出現的最小正整數是一個經典問題。這個問題看似簡單,但要高效地解決它,需要深入理解陣列和演算法的性質。本文將介紹一種高效的解法,並用JavaScript、Java和Go三種語言分別實作。

演算法思路

  1. 原地哈希:

    首先,我們嘗試將所有的正數放到其對應的索引位置上,即數值 1 應該放在陣列索引 0 的位置,數值 2 放在索引 1 的位置,以此類推。透過這種方式,我們可以在 O(n) 的時間復雜度內找到缺失的最小正數。

  2. 處理邊界情況:

    對於負數和大於陣列長度的數,我們可以忽略不計,因為它們不會影響到我們尋找的最小正數。

  3. 尋找缺失的最小正數:

    經過上述處理後,我們遍歷處理過的陣列,找到第一個數值與索引不對應的位置,該位置的索引加 1 即為缺失的最小正數。如果陣列中所有數值都正確對應其索引,說明陣列是完整的,缺失的最小正數就是陣列長度加 1。

程式碼實作

Java Scrip t實作

functionfirstMissingPositive(nums) {const n = nums.length;for (let i = 0; i < n; ++i) {while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] !== nums[i]) {const temp = nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i]; nums[i] = temp; } }for (let i = 0; i < n; ++i) {if (nums[i] !== i + 1) {return i + 1; } }return n + 1;}

Java實作

public classSolution {publicintfirstMissingPositive(int[] nums) {int n = nums.length;for (int i = 0; i < n; i++) {while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {int temp = nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i]; nums[i] = temp; } }for (int i = 0; i < n; i++) {if (nums[i] != i + 1) {return i + 1; } }return n + 1; }}

Go實作

funcfirstMissingPositive(nums []int)int { n := len(nums)for i := 0; i < n; i++ {for nums[i] > 0 && nums[i] <= n && nums[nums[i]-1] != nums[i] { nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i] } }for i := 0; i < n; i++ {if nums[i] != i+1 {return i + 1 } }return n + 1}

演算法解析

  • 時間復雜度: O(n),盡管內部有一個 while 迴圈,但每個元素最多只會被交換一次。

  • 空間復雜度: O(1),原地哈希不需要額外的空間。

  • 範例和測試

    以陣列 [3, 4, -1, 1] 為例:

    1. 經過原地哈希處理,陣列變為 [1, -1, 3, 4]。

    2. 遍歷處理過的陣列,發現索引 1 的值不為 2,因此缺失的最小正數為 2。

    總結

    本文介紹了尋找未出現的最小正整數的問題,並提供了一種原地哈希的方法來高效解決這個問題。

    熱門推薦