LeetCode寒假刷題 Day14
阿新 • • 發佈:2021-01-27
技術標籤:Leetcodeleetcodedfs快速排序演算法資料結構
文章目錄
前言
今天是寒假LeetCode刷題打卡的第十四天,繼續堅持、繼續加油!也希望我的博文能夠幫助到大家,若有疑問,可以隨時私信Call我!
一、215. 陣列中的第K個最大元素
1. 題目描述
難度:中等
2. 程式碼實現
class LRUCache extends LinkedHashMap<Integer, Integer>{
class Solution {
public int findKthLargest(int[] nums, int k) {
return quickSort(nums,0,nums.length-1,k);
}
public int quickSort(int []nums,int start,int end,int k)
{
if(start<=end)
{
int P=Partition(nums,start, end);
if(k-1==P)
return nums[P];
else if(k-1<P)
return quickSort(nums,start,P-1,k);
else
return quickSort(nums,P+1,end,k);
}
return -1;
}
public int Partition(int []nums,int start,int end)
{
int temp=nums[start];
while(start<end)
{
while(start<end&&nums[end]<=temp) --end;
nums[start]=nums[end];
while(start<end&&nums[start]>=temp) ++start;
nums[end]=nums[start];
}
nums[start]=temp;
return start;
}
}
注:利用快速排序的性質,當找到第K大的元素後便返回。
二、217. 存在重複元素
1. 題目描述
難度:簡單
2. 程式碼實現
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> set=new HashSet<Integer>();
for(int i=0;i<nums.length;++i)
{
if(!set.add(nums[i]))
{
return true;
}
}
return false;
}
}
三、230. 二叉搜尋樹中第K小的元素
1. 題目描述
難度:中等
230. 二叉搜尋樹中第K小的元素
2. 程式碼實現
class Solution {
public int kthSmallest(TreeNode root, int k) {
ArrayList<Integer> list=new ArrayList<Integer>();
dfs(root,list,k);
return list.get(k-1);
}
public void dfs(TreeNode root,ArrayList list,int k)
{
if(list.size()>=k)
return;
if(root!=null)
{
dfs(root.left,list,k);
list.add(root.val);
dfs(root.right,list,k);
}
}
}
總結
以上就是今天 LeetCode寒假刷題 Day14 做的三道題。若有任何疑問,歡迎私信或評論區留言鴨!