leetcode腾讯50题-215-217-230

215. 数组中的第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 ≤ 数组的长度。

class Solution {

public:

    int findKthLargest(vector<int>& nums, int k) {

        sort(nums.rbegin(), nums.rend());

       return nums[k-1];

    }

};

217. 存在重复元素

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

如果存在一值在数组中出现至少两次,函数返回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

class Solution {

public:

    bool containsDuplicate(vector<int>& nums) {

        sort(nums.begin(),nums.end());

        for(int i=1;i<nums.size();i++)

        {

            if(nums[i]==nums[i-1])return true;

        }

        return false;

    }

};

230. 二叉搜索树中第K小的元素

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

说明:

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

示例 1:

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

示例 2:

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

进阶:

如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化kthSmallest函数?

/**

 * Definition for a binary tree node.

 * struct TreeNode {

 *     int val;

 *     TreeNode *left;

 *     TreeNode *right;

 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}

 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}

 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}

 * };

 */

class Solution {

public:

    int n=0;

    int res;

    int kthSmallest(TreeNode* root, int k) {

        //递归

        dfs(root,k);

        return res;

    }

    void  dfs(TreeNode* root,int k){

          if(!root)return ;

          dfs(root->left,k);

          n++;

          if(n==k) res=root->val;

          dfs(root->right,k);

    }

};

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

推荐阅读更多精彩内容

  • 88. 合并两个有序数组[https://leetcode-cn.com/problems/merge-sorte...
    troubleL阅读 1,592评论 0 0
  • 121. 买卖股票的最佳时机[https://leetcode-cn.com/problems/best-time...
    troubleL阅读 1,495评论 0 0
  • ● 如何打印二叉树每层的节点? 考察点:二叉树 参考回答: 实现代码: import java.util.Arra...
    le_u阅读 3,440评论 0 0
  • 一趟结束后能够确定一个元素的最终位置的排序方法有: 简单选择排序、快速排序、冒泡排序、堆排序 稳定性定义:排序前后...
    Zak1阅读 2,361评论 0 0
  • 技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1....
    CurryCoder阅读 5,878评论 0 2