leetcode一些題的想法

2021-08-03 21:05:10 字數 1073 閱讀 7733

167. two sum ii - input array is sorted

這道題是給定乙個陣列和乙個數字a,再陣列中查詢兩個數其之和等於a,兩個數不會取同乙個數,數必定有解,陣列有序。

暴力的是兩層for迴圈,複雜度n方,然後改為了折半查詢,平均複雜度是nlogn。

比較優化的是利用兩個數之和的數學關係,如果這兩個數小於a,必定乙個數取值小了,角標增改++,如果大於a,乙個數的取值大了,角標--。我列出**(**不是我寫的,嘻嘻)

int i = 0, j = numbers.length - 1;

while(i < j)

return new int ;

這是我根據上面的思路改的。

public class solution 

inta1=;

return a1;

}

}

169. majority element

⌊ n/2 ⌋times.

you may assume that the array is non-empty and the majority element always exist in the array.

題意:給你乙個陣列,讓你找打乙個數量超過n/2的數,假定陣列非空,且這個數字必定存在

解1:這個陣列排序,統計每種數字出現的次數

解2:排序,通過題意可知這個被查詢的數字必定出現在nums[n/2]上,直接返回這個值就可以了

解3:(看到別的答案看到的)不需要排序,由題意知道這個數字必定會比別的數字多出至少乙個,利用這個性質,在陣列中刪掉兩個不同的數字(不是真正以上的刪除),不停刪除,知道剩下的數只有乙個(elem)。這個數字便是我們要查詢的。下面是解3的**。

int elem = 0;//要查詢的那個數字

int count = 0;//用來判斷

for(int i = 0; i < num.size(); i++)

else

}return elem;

做演算法題的一些想法

現在dp的難點在於,理解遞迴方程不難,但是如何據此設計出符合題意的正確的初始條件?不同的初始條件對應不同的問題。如01揹包中的是恰好裝滿揹包還是不超過揹包最大容量,可以通過初始化解決。自己在設計演算法的時候,如何設計出符合題意的初始條件和遞迴過程。這個過程全靠腦子復現一步一步的步驟是很慢的。因此,需...

最近一些想法

1.it系統的建設中,當前的方 似乎仍舊沒有足夠重視對目標的認識 這造成的結果,以盲人摸象來形容,實際上是太輕了。今天上街看給小孩玩的電動小象形狀會唱歌但不會動的那種汽車,小孩的媽媽說,咱們去騎小象吧,這給了我乙個認識 我們建模的時候甚至在更早的步驟中進行分析和抽象的時候,往往就是這麼做的。即便不是...

談一些想法

睡不著,做夢驚醒。不知不覺,又是乙個6月8號過去了,如果一切正常的話,應該又有一大批的學弟學妹們走下了考場,滿懷憧憬地準備迎接人生的下乙個十字路口。一年前的我,現在應該坐在家裡,想著我報考什麼學校和專業吧。最開始可能想去北京,報考計算機或者機械,或者別的什麼專業。去年填報志願的時候,人工智慧炒的非常...