几道leetcode

219. 存在重复元素 IIclass Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { if(nums.size()==0) return false; unordered_map<int,int>map; for(int i=0;i<nums.size();i++) {
摘要由CSDN通过智能技术生成

219. 存在重复元素 II

class Solution {
   
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
   
        if(nums.size()==0)
        return false;
        unordered_map<int,int>map;
        for(int i=0;i<nums.size();i++)
        {
   
            if(map.find(nums[i])!=map.end())// 找到了在索引i之前就出现过nums[i]这个元素,用find函数是来查找位置,如果没有找到得话就返回map.end
            {
   
                int a=i-map[nums[i]]; //map[nums[i]]用来表示元素所再得下标。
                if(a<=k)
                return true;
            }
            if(map.find(nums[i])==map.end())
             map[nums[i]] = i;   // 如果map里面没有,就把插入一条数据<元素,元素所在的下表>
        }
        return false;
    }
};

这道题用的是哈希表,将数组元素和数组元素得下标放入到哈希表当中,然后运用 unordered_map得.find函数来查找,找到了在索引i之前就出现过nums[i]这个元素,用find函数是来查找位置,如果没有找到得话就返回map.end。如果没有查找到得话就将该数组元素和数组下标放入到map当中,一直到找到然后与i-nums【i】与k相比较如果小于直接return,如果不是等跳出循环直接false;
226. 翻转二叉树

class Solution {
   
public:
    TreeNode* invertTree(TreeNode* root) {
   
        if(root==NULL)
        return root;
        TreeNode *p=root->left;
        root->left=invertTree(root->right);
        root->right=invertTree(p);
        return root;
    }
};

这道题就是一个简单得运用递归得过程不过特别注意得是要用用treenode *q=root->left;不然在你再第二局得时候生成得还是原来得树。

231. 2的幂

class Solution {
   
public:
    bool isPowerOfTwo(int n) {
   
        int i,j;
        if(n<=0)
        return false;
        while(n>2)
        {
   
            j=n%2;
            n=n/2;
            if(j==1)
            return false;
        }
        return true;
    }
};

234. 回文链表

class Solution {
   
public:
    bool isPalindrome(ListNode* head
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值