力扣题目训练(3)

news2024/12/26 17:45:19

2024年1月27日力扣题目训练

  • 2024年1月27日力扣题目训练
    • 290. 单词规律
    • 292. Nim 游戏
    • 303. 区域和检索 - 数组不可变
    • 91. 解码方法
    • 92. 反转链表 II
    • 41. 缺失的第一个正数

2024年1月27日力扣题目训练

2024年1月27日第三天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道,昨天没有做完,自制力还是不行,我写这个的初衷只是为了记录自己每天干了什么,希望能坚持下去。

290. 单词规律

链接: 丑数
难度: 简单
题目:题目描述
运行示例:
运行示例
思路:
由题目可知,这是一个映射关系,可以利用哈希表来做,但是只用一个哈希表无法完成双向绑定的效果故需要利用两个哈希表。
代码:

class Solution {
public:
    bool wordPattern(string pattern, string s) {
        unordered_map<char,string> map;
        unordered_map<string,char> rmap;
        vector<string> vtr;
        int t =-1;
        for(int i = 0 ; i < s.size(); i++){
           if(s[i] == ' '){
               t += 1;
               vtr.push_back(s.substr(t,i-t));
               t = i;
           }
        }
        vtr.push_back(s.substr(t+1,s.size()-1));
        int n = pattern.size();
        int m = vtr.size();
        if(m != n) return false;
        for(int i = 0; i < n; i++){
            map[pattern[i]] = vtr[i];
            rmap[vtr[i]] = pattern[i];
        }
        for(int i = 0; i < n; i++){
            if( map[pattern[i]] != vtr[i] || pattern[i] != rmap[vtr[i]]) return false;
        }
        return true;
    }
};

292. Nim 游戏

链接: 游戏
难度: 简单
题目:
题目描述
运行示例:
运行示例

思路:
数学问题,当自己面对4块石头时,无论怎样都无法胜出,故需避免总的石头数目为 4 的倍数。
代码:

class Solution {
public:
    bool canWinNim(int n) {
        return n%4 != 0;
    }
};

303. 区域和检索 - 数组不可变

链接: 区域和检索
难度: 简单
题目:
题目描述
运行示例:
运行示例

思路:
这道题目如果单纯的用循环相加也能做,但是很有可能时间超过,所以我采用的是求前项和,要求指定区间内的和可以相减即可。
代码:

class NumArray {
public:
    vector<int> sums;
    NumArray(vector<int>& nums) {
        sums.push_back(nums[0]);
        for(int i = 1; i < nums.size(); i++){
            sums.push_back(sums[i-1]+nums[i]);
        }

    }
    
    int sumRange(int left, int right) {
        if(left == 0) return sums[right];
        return sums[right]-sums[left-1];
    }
};

91. 解码方法

链接: 解码
难度: 中等
题目:
题目描述
运行示例:
运行示例

思路:
我是用递归做的,结果时间超过了。我看了解析是用动态规划做的,原因是当前字母的解码方法可以看做前面的解码方方法加上这个字母的解码方法。f[i]可以看作字符串 s的前 i个字符 s[1…i]s[1…i]s[1…i] 的解码方法数。
代码:

class Solution {
public:
    int numDecodings(string s) {
        int n = s.size();
        vector<int> f(n+1);
        f[0] = 1;
        for(int i = 1; i <= n; i++){
            if(s[i-1] != '0'){
                f[i] += f[i-1];
            }
            if(i > 1 && s[i - 2] != '0' && ((s[i - 2] - '0') * 10 + (s[i - 1] - '0') <= 26)  ){
                f[i] += f[i-2];
            }
        }
        return f[n];
    }
};

92. 反转链表 II

链接: 反转链表
难度: 中等
题目:
题目描述
运行示例:
运行示例
思路:
一次遍历的话就用头插法进行实现,注意给的head是不带头指针的,所以为了方便起见可以创建一个带头指针的链表。
代码:

class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int left, int right) {
        if(left >= right) return head;
        ListNode *dummyNode = new ListNode(-1);
        dummyNode->next = head;
        ListNode*p,*q,*curr;
        p = dummyNode;
        for(int i = 0; i < left-1; i++){
            p = p->next;
        }
        curr = p->next;
        for(int i = 0; i < right - left; i++){
            q = curr->next;
            curr->next = q->next;
            q->next = p->next;
            p->next = q;
        }
        return dummyNode->next;
    }
};

41. 缺失的第一个正数

链接: 缺失的正数
难度: 困难
题目:
题目描述

运行示例:

运行示例

思路:
对于一个长度为 N 的数组,其中没有出现的最小正整数只能在 [1,N+1] 中.我用的是哈希表的思路,但是空间复杂度不符合题意。我看了题解,他们用的是置换和搞一个标记。置换是指将出现过的的整数置换到数组的对应位置,大于n+1的直接舍弃。搞一个标记即对出现过的整数在数组对应位置上加一个负号,然后遍历第一个是正数的位置即为结果。

代码:
置换:

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        int n = nums.size();
        for(int i = 0; i < n; i++){
            while(nums[i] > 0 && nums[i] <= n && nums[nums[i] -1 ] != nums[i]){
                swap(nums[nums[i] - 1], nums[i]);
            } 
        }
        for(int i = 0; i < n; i++){
            if(nums[i] != i+1){
                return i + 1;
            }
        }
        return n + 1;
    }
};

标记

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        int n = nums.size();
        for(int i = 0; i < n; i++){
            if(nums[i] <= 0){
                nums[i] = n + 1;
            }
        }
        for(int i = 0; i < n; i++){
            int num = abs(nums[i]);
            if(num <= n){
                nums[num - 1] = -abs(nums[num - 1]);
            }
        }
        for(int i = 0; i < n; i++){
            if(nums[i] > 0 ){
                return i + 1;
            }
        }
        return n + 1;
    }
};

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

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

相关文章

机器学习算法实战案例:使用 Transformer 模型进行时间序列预测实战(升级版)

时间序列预测是一个经久不衰的主题&#xff0c;受自然语言处理领域的成功启发&#xff0c;transformer模型也在时间序列预测有了很大的发展。 本文可以作为学习使用Transformer 模型的时间序列预测的一个起点。 文章目录 机器学习算法实战案例系列答疑&技术交流数据集数据…

Java RC4加密算法

一、RC4加密算法 在密码学中&#xff0c;RC4&#xff08;来自Rivest Cipher 4的缩写&#xff09;是一种流加密算法&#xff0c;密钥长度可变。它加解密使用相同的密钥&#xff0c;因此也属于对称加密算法。 百度百科 - RC4&#xff1a;https://baike.baidu.com/item/RC4/34545…

揭秘1688商品详情API接口:一探阿里巴巴的亿级商品数据宝藏

一、概述 1688商品详情API接口是阿里巴巴提供的一套应用程序接口&#xff0c;允许第三方开发者获取1688平台上的商品详情信息。通过使用这个接口&#xff0c;开发者可以获取到商品的详细属性、规格参数、价格等信息&#xff0c;从而进行深度分析和挖掘&#xff0c;进一步优化和…

selenium元素定位---元素点击交互异常解决方法

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;薪资嘎嘎涨 1、异常原因 在编写ui自动化时&#xff0c;执行报错元素无法点击&#xff1a;ElementClickIn…

基础算法之Huffman编码

// Type your code here, or load an example. #include<iostream> #include<string> #include<queue> #include <unordered_map> #include <vector>using namespace std;//树节点结构 struct Node {char ch;int freq;Node *left;Node *right;No…

【数据结构】(一)从绪论到各种线性表

目录 一、绪论Introduction 1、数据结构 2、逻辑结构&#xff08;数据元素之间的相互关系&#xff09; 3、物理结构&#xff08;数据逻辑结构在计算机中的存储形式&#xff09; 4、数据类型&#xff08;一组性质相同的值的集合及定义在此集合上的一些操作的总称&#xff09…

幻兽帕鲁服务器多少钱?2024年Palworld游戏主机费用

幻兽帕鲁服务器多少钱&#xff1f;价格便宜&#xff0c;阿里云4核16G幻兽帕鲁专属服务器32元1个月、66元3个月&#xff0c;4核32G配置113元1个月、339元3个月&#xff1b;腾讯云4核16G14M服务器66元1个月、277元3个月、1584元一年。阿腾云atengyun.com分享阿里云和腾讯云palwor…

Python算法题集_找到字符串中所有字母异位词

本文为Python算法题集之一的代码示例 题目438&#xff1a;找到字符串中所有字母异位词 说明&#xff1a;给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字…

Java基础—面向对象OOP—18三大特性:封装、继承与多态

由于本身理解还不是很到位&#xff0c;所以写的很绕&#xff0c;后续待补充优化 1、封装&#xff08;底层&#xff09;&#xff1a;该露的露&#xff0c;该藏的藏 高内聚&#xff1a;类的内部数据操作细节自己完成&#xff0c;不允许外部干涉低耦合&#xff1a;仅暴露少量的方…

休息日的思考与额外题——链表

文章目录 前言链表知识点 一、 92. 反转链表 II二、21. 合并两个有序链表总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划二刷完卡子哥的刷题计划&#xff0c;加油&#xff01; 二刷决定精刷了&#xff0c;于是参加了卡子哥的刷题班&#xff0c;训练…

2023年算法SAO-CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法SAO-CNN-BiLSTM-ATTENTION回归预测&#xff08;matlab&#xff09; SAO-CNN-BiLSTM-Attention雪消融优化器优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 雪消融优化器( SAO) 是受自然界中雪的升华和融化行为的启发&#xff0c;开发了一种…

Linux true/false区分

bash的数值代表和其它代表相反&#xff1a;0表示true&#xff1b;非0代表false。 #!/bin/sh PIDFILE"pid"# truenginx进程运行 falsenginx进程未运行 checkRunning(){# -f true表示普通文件if [ -f "$PIDFILE" ]; then# -z 字符串长度为0trueif [ -z &qu…

shell脚本——条件语句

目录 一、条件语句 1、test命令测试条件表达式 2、整数数值比较 3、字符串比较 4、逻辑测试&#xff08;短路运算&#xff09; 5、双中括号 二、if语句 1、 分支结构 1.1 单分支结果 1.2 双分支 1.3 多分支 2、case 一、条件语句 条件测试&#xff1a;判断某需求是…

IP关联是什么?有什么后果?如何防止电商账号因IP关联被封?

在跨境电商的世界里&#xff0c;IP关联给多账号运营的商家带来了挑战。比如&#xff0c;亚马逊IP关联规则的执行对于那些经营多个店铺的卖家来说可能是一个不小的障碍。IP关联的影响不只是限于亚马逊&#xff0c;其他平台如Instagram、Facebook也有类似的机制&#xff0c;在之前…

Note-归一化层和前向源码

本专栏主要是深度学习/自动驾驶相关的源码实现,获取全套代码请参考 目录 简介BN层计算过程参数说明验证问题:bn层前面的cov不需要bia的原因 LN层计算过程参数说明验证问题:transfomer用LN而不是BN的原因 简介 深度学习中常见的归一化层包括批量归一化&#xff08;Batch Norma…

应急响应-流量分析

在应急响应中&#xff0c;有时需要用到流量分析工具&#xff0c;。当需要看到内部流量的具体情况时&#xff0c;就需要我们对网络通信进行抓包&#xff0c;并对数据包进行过滤分析&#xff0c;最常用的工具是Wireshark。 Wireshark是一个网络封包分析软件。网络封包分析软件的…

Redis面试(二)

1.Redis集群了解吗 前面说到了主从同步存在高可用和分布式问题&#xff0c;哨兵机制解决了高可用问题&#xff0c;而集群就是终极方案&#xff0c;一举解决高可用 和分布式问题。 1.数据分区&#xff1a;数据分区或称数据分片是集群最核心的功能&#xff0c;集群将数据分散到…

【人工智能】鲁滨逊归结原理-Python实现

一、实验目的 了解鲁滨逊归结算法原理&#xff0c;利用Python编写程序&#xff0c;实现鲁滨逊归结算法。 二、实验原理 鲁滨逊归结原理又称为消解原理&#xff0c;是鲁滨逊提出的一种证明子句集不可满足性&#xff0c;从而实现定理证明的一种理论及方法。它是机器定理证明的基…

项目解决方案:市小区高清视频监控平台联网整合设计方案(上)

目 录 一、项目需求 1.1业务需求 1.2技术需求 1.3 环境要求 1.3.1 硬件要求 1.3.2 技术服务要求 二、系统设计方案 2.1 视频监控平台基础功能设计 2.2 视频资源及联网设备编码与管理设计 2.2.1 全省现有联网视频资源属性 2.2.2 视频资源编码具体格…

任务修复实例(1)

实例1 任务名&#xff1a;增强防御&#xff08;quest_template.id 8490&#xff09; 涉及的两个数据表分别为 smart_script 和 creature_summon_groups smart_script Reactstate 取值参考源码 UnitDefines.h 的 ReactStates 定义&#xff0c;其中&#xff1a;0为被动&#…