1. 程式人生 > 其它 >LeetCode寒假刷題 Day14

LeetCode寒假刷題 Day14

技術標籤:Leetcodeleetcodedfs快速排序演算法資料結構

文章目錄


前言

今天是寒假LeetCode刷題打卡的第十四天,繼續堅持、繼續加油!也希望我的博文能夠幫助到大家,若有疑問,可以隨時私信Call我!

一、215. 陣列中的第K個最大元素

1. 題目描述

難度:中等

215. 陣列中的第K個最大元素

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. 題目描述

難度:簡單

217. 存在重複元素

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 做的三道題。若有任何疑問,歡迎私信或評論區留言鴨!