1.要求輸入乙個整數n
,用動態陣列a
來存放2~n
之間所有5或7的倍數,輸出該陣列。
思路:先令乙個空陣列,再用if判斷語句把能把5或7整除的數找出來,再把這個數插進空陣列裡面。迴圈操作。
def
zhengchu
(n):
array=
for i in
range(2
,n+1):
if i%5==
0or i%7==
0:else
: i=i
print
(array)
zhengchu=zhengchu(
99)
[5, 7, 10, 14, 15, 20, 21, 25, 28, 30, 35, 40, 42, 45, 49, 50, 55, 56, 60, 63, 65, 70, 75, 77, 80, 84, 85, 90, 91, 95, 98]
托普利茨矩陣問題
如果乙個矩陣的每一方向由左上到右下的對角線上具有相同元素,那麼這個矩陣是托普利茨矩陣。
給定乙個m x n
的矩陣,當且僅當它是托普利茨矩陣時返回true
。
思路:按照定義,我們分如下的情況進行討論:
def
juzhen
(matrix)
: row=
len(matrix)
#行數 col=
len(matrix[0]
)#列數
for i in
range(1
,len
(matrix)):
iflen
(matrix[i]
)!=col:
print
('你輸入的不是矩陣'
)for i in
range(0
,row-1)
:for j in
range(0
,col-1)
:if(matrix[i]
[j]!= matrix[i+1]
[j+1])
:return
false
;return
true
matrix =[[
1,2,
3,4]
,[5,
1,2,
3],[
9,5,
1,2]
]a=juzhen(matrix)
a
true
3. 三數之和
給定乙個包含 n 個整數的陣列nums
,判斷nums
中是否存在三個元素a,b,c
,使得a + b + c = 0
?找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
思路:演算法流程:
def
threesum
(nums)
:import numpy as np
n=len(nums)
res=
#先判斷陣列是否是否為空或者長度小於3
iflen
(nums)
<3:
return res
nums=np.sort(nums)
#公升序排列
for i in
range
(n):
if(nums[0]
>0)
:return res
if(i>
0and nums[i]
==nums[i-1]
):continue
l=i+
1 r=n-
1while
(l:sum
=nums[l]
+nums[i]
+nums[r]if(
sum==0)
:[nums[l]
,nums[i]
,nums[r]])
while
(l==nums[l+1]
):l=l+
1while
(l==nums[r-1]
):r=r-
1 l=l+
1 r=r-
1elif
(sum
>0)
: r=r-
1else
: l=l+
1return res
nums =[-
1,0,
1,2,
-1,-
4]ans=threesum(nums)
ans
[[-1, -1, 2], [0, -1, 1]]
資料結構 day1
資料結構往往跟演算法有很大關係 ep1 圖書館 ep2 遞迴函式很有可能導致記憶體溢位 因為每一次遞迴都在記憶體裡新建了乙個 程式 如果遞迴次數過多,那麼這個程式占用的空間會很恐怖 ep3 多項式 正常演算法和秦九韶演算法的比較。秦九韶演算法有效的減少了乘法的量級 clock 獲得從程式開始到呼叫這...
資料結構day1 棧
1.什麼是棧 後進先出 lifo 的線性表,僅能在一邊進出。2.實現方式有 順序棧和鏈式棧 順序棧的實現 將陣列的尾部當作棧頂,在棧頂尾部進行pop和push操作只需要常數時間。順序棧的實現 public class astack implements stackadt astack void in...
資料結構和演算法 Day 1
資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。程式設計 資料結構 演算法 簡單來說,資料結構研究的是一種關係,就是資料元素相互之間存在的一種或多種特定關係的集合。傳統上,資料結構分為邏輯結構和物理結構 邏輯結構是指資料物件中的資料元素之間的相互關係...