Datawhole第十四天打卡

第一题:数组中的第K个最大元素

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

示例 1:

输入: [3,2,1,5,6,4] 和 k =2输出:5

示例 2:

输入: [3,2,3,1,2,4,5,5,6] 和 k =4输出:4

说明:

你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。

public class Solution

{

    public int FindKthLargest(int[] nums, int k)

    {

        nums = nums.OrderBy(a => a).ToArray();

        return nums[nums.Length - k];

    }

}

第二题:存在重复元素

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例 1:

输入: [1,2,3,1]输出:true

示例 2:

输入: [1,2,3,4]输出:false

示例 3:

输入: [1,1,1,3,3,4,3,2,4,2]输出:true

public class Solution

{

    public bool ContainsDuplicate(int[] nums)

    {

        if (nums.Length < 2)

            return false;

        HashSet<int> h = new HashSet<int>();

        foreach (int num in nums)

        {

            if (h.Contains(num))

                return true;

            h.Add(num);

        }

        return false;

    }

}

第三题:二叉搜索树中第K小的元素

给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。

说明

你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

示例 1:

输入: root = [3,1,4,null,2], k =13/ \14\2输出:1

示例 2:

输入: root = [5,3,6,2,4,null,null,1], k =35/ \36/ \24/1输出:3

public class Solution

{

    List<int> _lst;

    public int KthSmallest(TreeNode root, int k)

    {

        _lst=new List<int>();

        MidTraver(root);

        return _lst[k-1];

    }


    private void MidTraver(TreeNode current)

    {

        if(current==null)

            return;

        MidTraver(current.left);

        _lst.Add(current.val);

        MidTraver(current.right);

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容