leetcode刷題記錄

2021-10-01 14:33:30 字數 2502 閱讀 9099

我覺得每天來兩道,練習練習,再看看人家是怎麼優化的。

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

c++:暴力求解,204ms,9.1m

class solution 

for index, num in enumerate(nums):

another_num = target - num

if(another_num in map):

return [map[another_num], index]

map[num] = index

return none

2.給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

c++: 32ms 10.5mb

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

if(l2 != null)

sum = n1 + n2 + flag;

flag = sum / 10;

listnode* sub1 = new listnode(sum % 10);

sub->next = sub1;

sub = sub1;

}return out->next;

}};

python: 76ms 12.9mb

# definition for singly-linked list.

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class solution:

def addtwonumbers(self, l1: listnode, l2: listnode) -> listnode:

out = listnode(0)

sub = out

flag = 0;

while(l1 != none or l2 != none):

x = l1.val if l1 else 0

y = l2.val if l2 else 0

sum = x + y + flag

flag = sum // 10

sub.next = listnode(sum%10)

sub = sub.next

if(l1 != none): l1 = l1.next

if(l2 != none): l2 = l2.next

if flag>0:

sub.next = listnode(1)

return out.next

3.給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

c++: 4ms 9.1mb

class solution 

}cout << max << endl;

return max;

}};

python: 112ms 12.8mb

class solution:

def lengthoflongestsubstring(self, s: str) -> int:

i,maxlength = 0,0

str = {}

for j in range(len(s)):

if( s[j] in str):

i = max(str[s[j]], i)

maxlength = max(maxlength, j-i+1)

str[s[j]] = j+1;

return maxlength

python其他人版:76ms 12.9mb

class solution:

def lengthoflongestsubstring(self, s: str) -> int:

max_length = 0

i = 0

test = ''

for j in s:

if j not in test:

test += j

i += 1

else:

if i >= max_length:

max_length = i

index = test.index(j)

test = test[(index+1):] + j

i = len(test)

if i > max_length:

max_length = i

return max_length

LeetCode刷題記錄

動態規劃和貪心演算法的異同點 class solution throw newruntimeexception 時間複雜度 o n 2 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o n o n 的時間。因此時間複雜度為 o n 2 需要一種方法,尋找符合要求的元...

leetcode刷題記錄

工作之餘刷刷題排解下寂寞 1 面試題66.構建乘積陣列 解題思路 題目要求可以簡化為求陣列中任意乙個元素左右兩邊所有元素的乘積。偷懶就用了乙個套路,練習了p c c python class solution def constructarr self,a list int list int 除法是...

leetcode刷題記錄

對應劍指offer刷題記錄,leetcode也來個。1.27.移除元素 這道題主要考點是雙指標,我自己的思路是,定義兩個指標,將需要移除的元素移到陣列的最後,同時移動low指標,代表陣列此時的大小,如下 class solution return i 其實還有一種指標,就是快慢指標,並不是像上面這樣...