【LeetCode】1000题挑战(225/1000)

这篇具有很好参考价值的文章主要介绍了【LeetCode】1000题挑战(225/1000)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1000题挑战

没有废话,直接开刷!

目录

1000题挑战

没有废话,直接开刷!

第一题:202. 快乐数 - 力扣(Leetcode)

题目接口:

解题思路:

代码:

过过过过啦!!!!

第二题:205. 同构字符串 - 力扣(Leetcode)

题目接口:

解题思路:

代码:

过过过过啦!!!!

第三题:219. 存在重复元素 II - 力扣(Leetcode)

题目接口:

解题思路:

代码:

过过过过啦!!!!

第四题:228. 汇总区间 - 力扣(Leetcode)

题目接口:

解题思路:

代码:

过过过过啦!!!!

第五题:234. 回文链表 - 力扣(Leetcode)

题目接口:

解题思路:

代码:

过过过过啦!!!!

题量截图:

写在最后:


第一题:202. 快乐数 - 力扣(Leetcode)

【LeetCode】1000题挑战(225/1000)

题目接口:

class Solution {
public:
    bool isHappy(int n) {

    }
};

解题思路:

这道题的核心思路就是:

循环的结束标志,当一个数二次插入的时候证明死循环了,

当出现1就证明成功找到了,

那么怎么判断呢?

1. 可以用哈希

2. 可以用双指针

双指针的思路是一个先循环,另一个后循环,

如果后循环的那个值等于先循环的值,就证明重复了。

我用的是哈希,

代码如下:

代码:

class Solution {
public:
    bool isHappy(int n) {
        unordered_set<int> st;
        int sum = n;
        while(1) {
            sum = get_sum(sum); //计算快乐数
            if(sum == 1) return true; 

            //unordered_set 的find如果找不到就会返回end()
            //也就是说,如果find找到第二个sum证明无限循环了
            if(st.find(sum) != st.end()) return false;
            else st.insert(sum); //插入sum
        }
        return false;
    }
    int get_sum(int n) {
        int happy = 0;
        while(n) {
            happy += pow((n % 10), 2);
            n /= 10;
        }
        return happy;
    }
};

过过过过啦!!!!

【LeetCode】1000题挑战(225/1000)

第二题:205. 同构字符串 - 力扣(Leetcode)

【LeetCode】1000题挑战(225/1000)

题目接口:

class Solution {
public:
    bool isIsomorphic(string s, string t) {

    }
};

解题思路:

这道题我看了一下题目,

就想着用哈希去解答,

直接建两个哈希的映射关系,

然后如果一个字符出现两次,而他的映射值不同,证明他不是同构。

代码:

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        unordered_map<char, char> mp1, mp2; //建两个哈希映射
        for(int i = 0; i < s.size(); i++) {
            char a = s[i], b = t[i];

            //如果这个字符出现两次,而且不是第一次映射的值,证明不是同构
            if(mp1.find(a) != mp1.end() && mp1[a] != b
            || mp2.find(b) != mp2.end() && mp2[b] != a) return false;
            mp1[a] = b;
            mp2[b] = a;
        }
        return true;
    }
};

过过过过啦!!!!

【LeetCode】1000题挑战(225/1000)

第三题:219. 存在重复元素 II - 力扣(Leetcode)

【LeetCode】1000题挑战(225/1000)

题目接口:

class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {

    }
};

解题思路:

这道题我用的是滑动窗口+哈希做的,

我们维护一个k大的滑动窗口,

如果窗口在滑动的过程中, 出现了相同的值,

证明是true,如果没有就返回false。

代码:

class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        unordered_map<int, bool> mp;
        for(int i = 0; i < nums.size(); i++) {
            if(i > k) mp[nums[i - k - 1]] = false; //控制左边界
            if(mp[nums[i]]) return true; //如果出现相同的值,返回true
            mp[nums[i]] = true; //控制右边界
        }
        return false;
    }
};

过过过过啦!!!!

【LeetCode】1000题挑战(225/1000)

第四题:228. 汇总区间 - 力扣(Leetcode)

【LeetCode】1000题挑战(225/1000)

题目接口:

class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {

    }
};

解题思路:

这道题,题目让我们分离出单个的数字,还有连续的有序区间,

那我们直接遍历数组,然后如果是单个的数字,我们就直接进数组,

如果是连续的区间,我们就记录区间开始的下标和结束的下标,

然后根据题目要求组合,再插入进数组即可。

代码:

class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {
        vector<string> v;
        for(int i = 0; i < nums.size(); i++) { //遍历
            int f = 0, t = i;
            string s;
            //如果是连续的区间,记录
            while(i + 1 < nums.size() && nums[i] == nums[i + 1] - 1) {
                f = 1;
                i++;
            }
            //如果是单个数字
            s += to_string(nums[i]);
            if(f) { //根据题目要求组合
                s.clear();
                s += to_string(nums[t]);
                s += "->";
                s += to_string(nums[i]);
            }
            v.push_back(s); //插入数组
        }
        return v;
    }
};

过过过过啦!!!!

【LeetCode】1000题挑战(225/1000)

第五题:234. 回文链表 - 力扣(Leetcode)

【LeetCode】1000题挑战(225/1000)

题目接口:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    bool isPalindrome(ListNode* head) {

    }
};

解题思路:

这道题是一个非常经典的链表面试题,

这道题有很多解法:

1. 把链表的数插进数组,但是这样的空间复杂度是O(N)

2. 递归

3. 我使用的方法:

用快慢指针分离这个链表,

翻转后半链表,

两个链表比较,如果相同,证明是回文链表,不相同证明不是。

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        //双指针找中
        ListNode* cur = head;
        ListNode* prev = head;
        while(cur && cur->next) {
            cur = cur->next->next;
            prev = prev->next;
        }

        //翻转链表2
        cur = prev->next;
        prev->next = nullptr;
        while(cur) {
            ListNode* tmp = prev;
            prev = cur;
            cur = cur->next;
            prev->next = tmp;
        }

        //两链表比较
        cur = head;
        ListNode* cur2 = prev;
        while(cur && cur2) {
            if(cur->val != cur2->val) return false;
            cur = cur->next;
            cur2 = cur2->next; 
        }

        return true;
    }
};

过过过过啦!!!!

【LeetCode】1000题挑战(225/1000)

题量截图:

【LeetCode】1000题挑战(225/1000) 

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出文章来源地址https://www.toymoban.com/news/detail-431757.html

到了这里,关于【LeetCode】1000题挑战(225/1000)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Leetcode225. 用队列实现栈

    请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ; 否则,返回 false 。

    2023年04月20日
    浏览(22)
  • Day10|LeetCode232.用栈实现队列、LeetCode 225. 用队列实现栈

    栈和队列理论基础: 队列是先进先出,栈是先进后出。如图所示: 栈和队列是STL(C++标准库)里面的两个数据结构。 栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。  栈的内部结构,

    2024年02月14日
    浏览(29)
  • 【用队列实现栈】【用栈实现队列】Leetcode 232 225

    ---------------🎈🎈题目链接 用队列实现栈🎈🎈------------------- ---------------🎈🎈题目链接 用栈实现队列🎈🎈-------------------

    2024年01月20日
    浏览(36)
  • 栈和队列OJ题:LeetCode--225.用队列实现栈

     朋友们、伙计们,我们又见面了,今天给大家带来的是LeetCode--225.用队列实现栈 数 据 结 构 专 栏:数据结构 个    人   主    页 :stackY、 LeetCode 专  栏 :LeetCode刷题训练营 LeetCode--225.用队列实现栈:https://leetcode.cn/problems/implement-stack-using-queues/ 目录 1.题目介绍 2.实例演

    2024年02月06日
    浏览(29)
  • 算法训练day9Leetcode232用栈实现队列225用队列实现栈

    https://programmercarl.com/%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 见我的博客 https://blog.csdn.net/qq_36372352/article/details/135470438?spm=1001.2014.3001.5501 在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些, 输出栈如果为空,就把进栈数据全部导

    2024年01月24日
    浏览(32)
  • LeetCode 1000. Minimum Cost to Merge Stones【记忆化搜索,动态规划,数组】困难

    本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,

    2023年04月26日
    浏览(88)
  • 2022/10/16今日问题:(点击下方目录可直接跳转)

    这些问题都是在写作业过程中碰到的,记录下来,以后可以翻阅,也希望可以给有同样问题的人答疑解惑。本人新手,多有不熟、不严谨、不规范的地方,希望大家多多指正。如果对于问题有更好的解决方法也欢迎分享。 目录 问题一、一个Textview组件中的文本被前面的组件挡

    2024年02月16日
    浏览(35)
  • git合作开发时,没有pull就直接push会怎样

    git的时候总会遇到一些奇怪的问题 目前遇到最麻烦的还是在push之前没有pull 每天上班第一件事pull一下,上传代码之前一定要pull 没有pull就push,会出现merge 即使使用git reset --soft HEAD^,会回到仓库,但是会出现其他同事提交的代码,这个时候想pull也不行,会提示有待merge的,因

    2023年04月09日
    浏览(26)
  • 没有“中间商赚差价”, OpenVINO™ 直接支持 PyTorch 模型对象

    点击蓝字 关注我们,让开发变得更有趣 作者 | 杨亦诚 排版 | 李擎 没有“中间商赚差价”,  OpenVINO™  直接支持 PyTorch 模型对象 背景 作为最热门的开源深度学习框架之一,PyTorch 的易用性和灵活性使其深受学术和研究界的喜爱。之前 OpenVINO™ 对于 PyTorch 模型的支持也仅仅停

    2024年02月10日
    浏览(26)
  • hadoop报错:没有那个文件或目录

    删掉haoop安装目录下 /opt/module/hadoop-3.3.0/etc/hadoop/workers 文件里面的localhost 保存后可成功运行脚本 附上:myhadoop.sh(实现hadoop集群快速启停)

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包