大體思路:給原始資料排序,然後值在負數部分迴圈,去除相同值得時候因為排過序,所以相同值都挨在一起,比較方便去除相同值。注意三個數都應該判斷是否有相同值。
# -*- coding :utf-8 -*-
class solution:
def threesum(self, nums):
result =
temp_nums = sorted(nums)
l = len(temp_nums)
for i in range(l - 2):
if i > 0 and temp_nums[i] == temp_nums[i -1]:
continue
else:
if temp_nums[i] <= 0:#只迴圈負數
j = i + 1
k = l - 1
while j < k:
x = temp_nums[i] + temp_nums[j] + temp_nums[k]
if x == 0:
while j < k and temp_nums[j] == temp_nums[j+1]:#去掉重複部分左邊
j += 1
while j < k and temp_nums[k] == temp_nums[k-1]:#去掉重複部分右邊
k -= 1
j += 1
elif x > 0:
k -= 1
else:
j += 1
else:
break
return result
leetcode 整數反轉(python3)
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數溢位那麼就返回 0。題目連線 class solution def reverse self,x int int...
leetcode 移除元素 python3
一 自己思路 2.class solution def removeelement self,nums,val type nums list int type val int rtype int for i in range len nums flag true if nums i val cont...
leetcode 外觀數列 python3
方案一 遞迴方法 class solution def countandsay self,n int str if n 1 return 1 elif n 2 return 11 elif n 3 return 21 elif n 4 return 1211 elif n 5 return 1112...