給定乙個整數陣列nums
和乙個目標值target
,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路一
定義乙個索引i
遍歷出nums
中的元素,判斷列表中是否有符合target - nums[i]
的值,有的話返回對應值的索引sums.index(target - sums[i])
class
solution()
:def
twosum
(self, nums, target)
:for i in
range
(len
(nums)):
if(target - nums[i]
)in nums:
j = nums.index(target-nums[i]
)if i == j:
# 判斷兩次索引是否代表同乙個值
continue
# 代表值相同 開始下一次迴圈
else
:return
[i, j]
# 返回結果
else
:# 值如果只不在sums裡 則開始下乙個迴圈
continue
# pass
思路二
構建空字典,用去重的方法返回對應索引 # 列表同樣可以
class
solution
:def
twosum
(self, nums, target)
: dic =
# 構建乙個空字典用來儲存資料
lens =
len(nums)
# nums的長度
for i in
range
(lens)
:# 遍歷nums列表
if target - nums[i]
notin dic:
# 往空字典裡新增 target-nums[i]
dic[nums[i]
]= i # 第乙個 正確值 對應的 索引
else
:# 如果值已經存在 則返回第一次出現的 值的索引 和 當前索引
return
[dic[target - nums[i]
], i]
class
solution
:def
twosum
(self, nums, target)
: list1 =
lens =
len(nums)
for i in
range
(lens)
:if target-nums[i]
notin list1:
)else
:return
[list1.index(target-nums[i]
), i]
給定乙個非負整數c
,你要判斷是否存在兩個整數a
和b
,使得 a² + b² = c。
輸入: 5
輸出: true
解釋: 1 * 1 + 2 * 2 = 5
思路一
根據勾股定理 a 和 b都是要小於 < c******0.5(根號c),首先兩個數必須要屬於這個非負整數,可以用兩個指標從0
開始遍歷 非負整數, 乙個(0, c+1) 另乙個(i, c+1)
ps 兩個數可以重複 比如1
和2
class
solution1
:# 好的超時了,我們換乙個 枯了....
defjudgesquaresum
(self, c)
:for i in
range(0
,int
(c**
0.5+1)
):for j in
range
(i,int
(c**
0.5+1)
):if i **
2+ j **
2== c:
return
true
思路二
同理,a和b都小於根號c,首先遍歷(0, int(c0.5+1)),再判斷(c-i²)½ 的資料型別與 (c-i²)½ 是否相同
注意:這裡不能直接根據資料型別是不是整形來判斷,因為生成的result值是 float 整形也會以浮點型的方式表現出來 比如result == 1
返回的是1.0
class
solution1
:def
judgesquaresum
(self, c)
:for i in
range(0
,int
(c**
0.5)+1
):result1 =
(c-i*i)
**0.5
print
(result1)
# 2.0
ifisinstance
(result1,
int)
==true
:return
true
result = solution1(
)print
(result.judgesquaresum(c=4)
)
class
solution1
:def
judgesquaresum
(self, c)
:for i in
range(0
,int
(c**
0.5)+1
):result1 =
(c-i*i)
**0.5
ifint
(result1)
==(c-i*i)
**0.5
:# if int((c-i*i)**0.5) == (c-i*i)**0.5:
return
true
if int(result1) == (c-i*i)**0.5: # if int((c-i*i)**0.5) == (c-i*i)**0.5:
return true
演算法入門 day01
1 2019中,包含2 0 1 9的數的和 package 2019 author seh date 2020 12 23 9 22 version 1.0 1 2019中,包含2 0 1 9的數的和 boolean contains str 檢測字串內有無包含str的內容 public class...
python演算法每日練習day01
2.使用的是bfs 廣度優先遍歷 佇列 先進先出 完成的 題目 2,1,1 1,1,0 0,1,1 2 腐爛,1 新鮮,0 空 每分鐘任何與腐爛的橘子相鄰的新鮮橘子都會腐爛,返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1,沒有新鮮橘子返回0 直接上 class solu...
學習筆記day01
作業系統簡稱 operating system 簡稱os 其的本質就是乙個軟體,作業系統對上可以管理應用程式,對下可以訪問硬體裝置。主流的作業系統 pc機領域 windows系列,ios,伺服器領域 linux系列,unix,windows server。手持裝置 ios,android,塞班,wi...