LeetCode刷題系列1

2021-09-28 14:12:56 字數 1042 閱讀 8772

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例:給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

思路:採取一邊插入雜湊表一邊尋找一邊在已經插入的雜湊表中尋找的方式,每次都拿著即將插入雜湊表的數字然後在雜湊表中找是否存在剩下的那個函式。有人可能會問,在迴圈裡面查詢的話時間複雜度不就變高了嘛,但是雜湊表查詢時間可以說是o(1)是常數(避免衝突的演算法採用鏈位址可能不為o(1),但一般不用鏈位址來避免衝突),所以總的時間複雜度就為o(n),雜湊表就是一種用空間換取時間的演算法。

class solution );

return res;

}hash[nums[i]] = i;

}return res;

}};

(2)時間複雜度(o(n2))

class solution }}

return result;

}};

(3)c**學習

typedef struct hash_node  hash_node; 

int* twosum(int* nums, int numssize, int target, int* returnsize)

// 將本次遍歷的值放入雜湊表,value為陣列下標,key為對應數值

hash_item2 = (hash_node *)malloc(sizeof(hash_node));

hash_item2->id = *(nums+i);

hash_item2->index = i;

hash_add_int(hash_table, id, hash_item2);

}return two_nums;

}

leetcode刷題系列

題目 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。解題思路 如果乙個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都會變成1 如果最右邊的1後面還有0的話 其餘所有位將不會受到影響。舉個例子 乙個二進...

LeetCode刷題系列 1 兩數之和

給定乙個整數陣列num s nums nums 和乙個目標值tar ge t target target 請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 tar...

LeetCode刷題系列4

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...