文章目录
前言
今天是寒假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 做的三道题。若有任何疑问,欢迎私信或评论区留言鸭!