初遇雜湊表

2021-10-06 20:47:29 字數 3027 閱讀 2792

對於我來說,剛剛著手**的新手,在演算法方面還是了解比較短淺,很多演算法名稱也從未聽說過。

很多知識都是通過在 leetcode 上做題,看題解了解的,雜湊表就是其中的一種。

第一次看到雜湊表這個名詞還是在 leetcode 上的一道《兩數之和》,當時我是在做陣列部分的題,在學習題解的時候突然了解到雜湊表這個名詞,然後就深入了解了一下,然後被雜湊表冗長的**迷惑住了。

第一反應就是這**怎麼這麼長!!!qaq

但是看到雜湊表的時間複雜度,確實還是比雙重 for 迴圈要小的多。

最近便到雜湊表專題了解了下雜湊表的用法。

下面是一些菜鳥**:編寫乙個演算法來判斷乙個數 n 是不是快樂數。

「快樂數」定義為:對於乙個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是 無限迴圈 但始終變不到 1。如果 可以變為 1,那麼這個數就是快樂數。

如果 n 是快樂數就返回 true ;不是,則返回 false 。

示例

輸入:19

輸出:true

解釋:

12 + 92 = 82

82 + 22 = 68

62 + 82 = 100

12 + 02 + 02 = 1

(

int n)

;int sum;

while

(n !=1)

if(hash[sum]==0

)else

return false;

}return true;

}給定兩個字串 s 和 t,判斷它們是否是同構的。

如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。

所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。

示例 1:

輸入: s = 「egg」, t = 「add」

輸出: true

示例 2:

輸入: s = 「foo」, t = 「bar」

輸出: false

示例 3:

輸入: s = 「*****」, t = 「title」

輸出: true

bool isisomorphic

(char

* s,

char

* t)

, hash2[

130]

=, len =

strlen

(s);

for(

int i =

0; i < len; i++)}

return true;

}

當然,在學習過程中也發現了雜湊表的問題,目前我接觸了雜湊表陣列,對於字串的時候,由於asnii 編碼只需要 128 位,所以建立陣列比較方便,但是在處理 int 型陣列的時候,負數和大資料成為了雜湊表陣列的問題,這就需要進一步的深入的學習更深層次的雜湊表了。

下面就是陣列的問題**:給定兩個陣列,編寫乙個函式來計算它們的交集。

示例 1:

輸入: nums1 = [1,2,2,1], nums2 = [2,2]

輸出: [2,2]

示例 2:

輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]

輸出: [4,9]

說明:

1.輸出結果中每個元素出現的次數,應與元素在兩個陣列**現的次數一致。

2.我們可以不考慮輸出結果的順序。

int

*intersect

(int

* nums1,

int nums1size,

int* nums2,

int nums2size,

int* returnsize)

for(i =

0; i < nums2size; i++)}

*returnsize = k;

return nums1;

}else

for(i =

0; i < nums1size; i++)}

*returnsize = k;

return nums2;

}}

給定乙個整數陣列和乙個整數 k,判斷陣列中是否存在兩個不同的索引 i 和 j,使得 nums [i] = nums [j],並且 i 和 j 的差的 絕對值 至多為 k。

示例 1:

輸入: nums = [1,2,3,1], k = 3

輸出: true

示例 2:

輸入: nums = [1,0,1,1], k = 1

輸出: true

示例 3:

輸入: nums = [1,2,3,1,2,3], k = 2

輸出: false

bool containsnearbyduplicate

(int

* nums,

int numssize,

int k)

b++;}

else

if(hash[nums[i]]!=

0)} hash[nums[i]

]= i;}if

(k < min)

return true;

}

初遇設計模式

今天開始學設計模式了。用的是程杰老師寫的 大話設計模式 在網上搜了一下這位老師的資料,簡單的了解一下這位大牛。那麼什麼是設計模式?design pattern 設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易...

1 初遇貪心

以題著手,先上題。題意大致為,n堆果子,每一次合併兩堆果子為一堆,消耗的體力等於兩堆果子的重量之和。直到經過 n 1 次合併之後,就只剩下一堆了,要求消耗體力最少。例如有 3堆果子,數目依次為 1,2,9。可以先將 1 2堆合併,新堆數目為3,耗費體力為3 接著,將新堆與原先的第三堆合併,又得到新的...

初遇C語言

壹 知識總結 第二章 c資料型別 1 int定義整數量 float定義單精度浮點數量 double定義雙精度浮點數量 char定義字元型量。2 讀程式都要從main 入口,然後從最上面順序往下讀 碰到迴圈做迴圈,碰到選擇做選擇 有且只有乙個main函式。3 注釋不可以巢狀,如int a 1,int ...