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

news2025/1/11 2:51:08

1000题挑战

没有废话,直接开刷!

目录

1000题挑战

没有废话,直接开刷!

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

题目接口:

解题思路:

代码:

过过过过啦!!!!

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

题目接口:

解题思路:

代码:

过过过过啦!!!!

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

题目接口:

解题思路:

代码:

过过过过啦!!!!

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

题目接口:

解题思路:

代码:

过过过过啦!!!!

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

题目接口:

解题思路:

代码:

过过过过啦!!!!

题量截图:

写在最后:


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

题目接口:

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;
    }
};

过过过过啦!!!!

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

题目接口:

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;
    }
};

过过过过啦!!!!

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

题目接口:

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;
    }
};

过过过过啦!!!!

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

题目接口:

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;
    }
};

过过过过啦!!!!

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

题目接口:

/**
 * 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;
    }
};

过过过过啦!!!!

题量截图:

 

写在最后:

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

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

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于W1R3S的渗透测试

您被雇来对W1R3S做渗透测试&#xff0c;他们要求您获得root权限并找到标志(位于/root目录中)。 目标&#xff1a;得到root权限&找到flag.txt 目录 1、信息收集 &#xff08;1&#xff09;定位靶机IP &#xff08;2&#xff09;端口扫描 &#xff08;3&#xff09;脚本…

【HTMLCSSJS】写实验发现的一些注意点

&#x1f38a;专栏【 前端易错合集】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 目录 &#x1f6a5;innerHtml和innerText的区别 &#x1f3f…

28-Servlet API

1.HttpServlet 我们写 Servlet 代码的时候&#xff0c;⾸先第⼀步就是先创建类&#xff0c;继承⾃ HttpServlet&#xff0c;并重写其中的某些⽅法。 1.1.核心方法 实际开发的时候主要重写 doXXX ⽅法&#xff0c;很少会重写 init / destory / service。 这些⽅法的调⽤时机&…

c++基础-运算符

目录 1关系运算符 2运算符优先级 3关系表达式的书写 代码实例&#xff1a; 下面是面试中可能遇到的问题&#xff1a; 1关系运算符 C中有6个关系运算符&#xff0c;用于比较两个值的大小关系&#xff0c;它们分别是&#xff1a; 运算符描述等于!不等于<小于>大于<…

2 异或位运算大厂必刷题

文章目录 如何不用额外变量交换两个数一个数组中有一种数出现了奇数次&#xff0c;其他数都出现了偶数次&#xff0c;怎么找到并打印这种数怎么把一个int类型的数&#xff0c;提取出最右侧的1来怎么把一个int类型的数,获取位数为1的数量一个数组中有两种数出现了奇数次&#xf…

开发问题记录20230502

4 Docker普通用户无权限 普通用户执行docker命令提示信息&#xff1a; docker images docker ps -adocker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/c…

Java 的简要介绍及开发环境的搭建(超级详细)

图片来源于互联网 目录 | CONTENT Java 简介 一、什么是 Java 二、认识 Java 版本 三、选择哪个版本比较好 搭建 Java 开发环境 一、下载 Java 软件开发工具包 JDK 二、配置环境变量 自动配置 手动配置 三、下载合适的 IDE IntelliJ IDEA Visual Studio Code Eclip…

Flutter 组件使用:使用 Stack 替代 GlobalKey 的定位 tip-widget 实现

场景 有时候需要在指定位置进行 tip-widget 的弹出与展示&#xff0c;常见的方式是通过给指定位置上的指定 widget 添加 GlobalKey 来实现&#xff1b; 但是&#xff0c;使用这种方式的话&#xff0c;【一】大多数时候都需要进行全局定位转换&#xff08;localToGlobal&#…

c++ 11标准模板(STL) std::vector (三)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…

Winform从入门到精通(36)——ColorDialog(史上最全)

文章目录 前言一、属性1、AllowFullOpen2、AnyColor3、Color4、FullOpen5、ShowHelp6、SolidColorOnly7、Tag二、事件1、HelpRequest前言 当我们需要设置某个控件的颜色时,并且需要弹出一个可以选择颜色的对话框时,这时候就需要使用ColorDialog 一、属性 1、AllowFullOpen…

LoadRunner 安装指南:详解安装步骤和常见问题解决方法

目录&#xff1a;导读 引言 LoadRunner安装 LoadRunner的安装 结语 引言 作为一款领先的性能测试工具&#xff0c;LoadRunner 被广泛应用于各种企业级应用程序和系统的性能测试中。然而&#xff0c;对于初学者来说&#xff0c;正确安装 LoadRunner 并不是一件容易的事情。…

Spring 填充属性和初始化流程源码剖析及扩展实现

前言 在上一篇博文 讲解 Spring 实例化的不同方式及相关生命周期源码剖析 介绍了 Spring 实例化的不同方式&#xff0c;本文主要围绕实例化过后对象的填充属性和初始化过程进行详细流程剖析 回顾前言知识&#xff0c;doCreateBean->createBeanInstance&#xff0c;通过 S…

沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟

目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 CH32V 存储容量命名方式 在介绍下面的内容前, 先看一下CH32V系列和存储相关的命名格式, 以CH32V203为例, 前面的CH32V203代表一个系列, 后面的字…

剑指offer(C++)-JZ47:礼物的最大价值(算法-动态规划)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 在一个m\times nmn的棋盘的每一格都放有一个礼物&#xff0c;每个礼物都有一定的价值&#xff08;价值大于…

使用CometD技术实现web系统中的主动推送

CometD技术通过Http长轮询(或websocket长链接)方式在服务器与客户端之间构建了一条交互的链路。它们都遵守Bayeux协议,交换的消息是Bayeux message,消息格式是JSON。 1、需求说明 当用户登录后,后台根据用户订阅把最新的信息反推给web客户端,展示在页面上。CometD服务器…

菜地管理系统【控制台+MySQL】(Java课设)

系统类型 控制台类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87737285 更多系统资源库地…

计算机组成原理9控制单元的结构

9.1操作命令的分析 取值周期间址周期执行周期中断周期 取指周期数据流 PC存放下条指令的地址给MAR访问存储器相应单元&#xff0c;将数据取出来送给MDR寄存器&#xff0c;MDR取出来的内容送给IR指令寄存器&#xff0c;然后对指令进行译码&#xff0c;把指令的操作码部分取出…

医学图像的深度学习的完整代码示例:使用Pytorch对MRI脑扫描的图像进行分割

图像分割是医学图像分析中最重要的任务之一&#xff0c;在许多临床应用中往往是第一步也是最关键的一步。在脑MRI分析中&#xff0c;图像分割通常用于测量和可视化解剖结构&#xff0c;分析大脑变化&#xff0c;描绘病理区域以及手术计划和图像引导干预&#xff0c;分割是大多数…

MySQL解析器和优化器,你了解它们吗?

解析器都做哪些事情 其主要功能是将输入的SQL语句分解为语法单元&#xff0c;然后将这些语法单元转换为内部表示的数据结构&#xff0c;最终生成一个可执行的查询计划。解析器是MySQL中的一个重要组成部分&#xff0c;它直接影响查询的性能和正确性。 词法分析&#xff1a; …

【win11的CARSIM2020安装教程最全,包括下载地址,关闭防火墙】

carsim2020.0软件下载地址参考&#xff1a;https://www.cnblogs.com/bbman/p/15148890.html 百度网盘提取后&#xff0c;先关闭防护墙。 如何永久关闭windows defender杀毒软件。 第一种方式 安装某一杀毒软件&#xff0c;比如某管家、某60&#xff0c;杀毒软件会覆盖Defender…