代码随想录leetcode200题之数组

目录

  • 1 介绍
  • 2 训练
  • 3 参考

1 介绍

本博客用来记录代码随想录leetcode200题中数组部分的题目。

2 训练

题目1:704二分查找

C++代码如下,

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int res = -1;
        int l = 0, r = nums.size() - 1;
        //找到>=target的下标
        while (l <= r) {
            int mid = l + r >> 1;
            if (nums[mid] >= target) {
                res = mid;
                r = mid - 1;
            } else {
                l = mid + 1;
            }
        }
        
        if (res == -1) return res;
        else return nums[res] == target ? res : -1;
    }
};

python3代码如下,

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        res = -1
        l, r = 0, len(nums) - 1

        while l <= r:
            mid = (l + r) // 2
            if nums[mid] >= target:
                res = mid 
                r = mid - 1
            else:
                l = mid + 1
            
        if res == -1:
            return res 
        else:
            return res if nums[res] == target else -1

题目2:27移除元素

C++代码如下,

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int i = 0;
        for (int j = 0; j < nums.size(); ++j) {
            if (nums[j] != val) nums[i++] = nums[j];
        }
        return i;
    }
};

python3代码如下,

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        i = 0
        for j in range(len(nums)):
            if nums[j] != val:
                nums[i] = nums[j]
                i += 1
        return i

题目3:977有序数组的平方

C++代码如下,

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        //从最大数开始排
        int n = nums.size();
        int i = 0, j = n - 1;
        vector<int> res(n);

        int k = n - 1;
        while (i <= j) {
            if (nums[i] * nums[i] > nums[j] * nums[j]) {
                res[k] = nums[i] * nums[i];
                i++;
                k--;
            } else {
                res[k] = nums[j] * nums[j];
                j--;
                k--;
            }
        }
        return res;
    }
};

python3代码如下,

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        n = len(nums)
        i, j = 0, n - 1
        k = n - 1

        res = [0] * n 

        while i <= j:
            if nums[i] * nums[i] > nums[j] * nums[j]:
                res[k] = nums[i] * nums[i]
                i += 1
                k -= 1
            else:
                res[k] = nums[j] * nums[j]
                j -= 1
                k -= 1
        return res

题目4:209长度最小的子数组

C++代码如下,

//往大了讲,与子数组的最大和类似
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        //滑动窗口法
        int res = INT_MAX;
        int s = 0;
        for (int r = 0, l = 0; r < nums.size(); ++r) {
            s += nums[r];
            while (s >= target) {
                res = min(res, r - l + 1);
                s -= nums[l++];
            }
        }
        return res == INT_MAX ? 0 : res;
    }
};

python3代码如下,

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        s = 0
        l, r = 0, 0
        n = len(nums)
        res = 1e10
        
        while r < n:
            s += nums[r]

            while s >= target:
                res = min(res, r - l + 1)
                s -= nums[l]
                l += 1

            r += 1

        return res if res != 1e10 else 0

题目5:59螺旋矩阵 II

C++代码如下,

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n, vector<int>(n, 0));

        int val = 1;
        for (int k = 0; k <= n / 2; k += 1) {

            //起点(0 + k, 0 + k)
            int x0 = k, y0 = k;
            int length = n - 2 * k;
            
            //向右
            for (int step = 0; step < length - 1; ++step) {
                int x = x0;
                int y = y0 + step;
                res[x][y] = val++; 
            }

            //向下
            x0 = x0;
            y0 = y0 + length - 1;
            for (int step = 0; step < length - 1; ++step) {
                int x = x0 + step;
                int y = y0;
                res[x][y] = val++;
            }

            //向左<--
            x0 = x0 + length - 1;
            y0 = y0;
            for (int step = 0; step < length - 1; ++step) {
                int x = x0;
                int y = y0 - step;
                res[x][y] = val++;
            }

            //向上
            x0 = x0;
            y0 = y0 - length + 1;
            for (int step = 0; step < length - 1; ++step) {
                int x = x0 - step;
                int y = y0;
                res[x][y] = val++;
            }

            //最后一步
            if (length == 1) {
                res[x0][y0] = val;
            }
        }
        return res;
    }
};

python3代码如下,

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        res = [[0] * n for _ in range(n)]

        val = 1
        for k in range(n // 2 + 1):
            x0, y0 = k, k
            length = n - 2 * k

            #向右走-->
            for step in range(length-1):
                x, y = x0, y0 + step 
                res[x][y] = val 
                val += 1
            
            x0, y0 = x0, y0 + length - 1
            #向下走
            for step in range(length-1):
                x, y = x0 + step, y0 
                res[x][y] = val 
                val += 1
            
            x0, y0 = x0 + length - 1, y0
            #向左走<--
            for step in range(length-1):
                x, y = x0, y0 - step 
                res[x][y] = val 
                val += 1
            
            x0, y0 = x0, y0 - length + 1
            #向上走
            for step in range(length-1):
                x, y = x0 - step, y0 
                res[x][y] = val 
                val += 1
            
            if length == 1:
                res[x0][y0] = val 
                val += 1
        
        return res 

3 参考

代码随想录官网

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Cheetah3D for Mac - 轻松打造专业级3D作品

对于追求专业级3D作品的设计师来说&#xff0c;Cheetah3D for Mac无疑是一款不可多得的工具。 这款软件拥有强大的建模、渲染和动画功能&#xff0c;能够满足您在3D设计方面的各种需求。通过简单的操作&#xff0c;您可以轻松构建出复杂的3D模型&#xff0c;并为其添加逼真的材…

道可道,非常道,名可名,非常名;学习道德经新解读!打破思想钢印——早读(逆天打工人爬取热门微信文章解读)

你读过道德经吗? 引言Python 代码第一篇 洞见 原来这就是&#xff1a;穷人的思想钢印第二篇 人民日报 来了&#xff01;新闻早班车要闻社会政策 结尾 知识始于好奇 终于智慧 好奇心驱使我们探索 而智慧则是自由思想的结晶 引言 玄之又玄 众妙之门 今天真的是大开我的眼界 我之…

卡尔曼滤波实战

入门内容 假如有个超声波&#xff0c;它传回的数据是这样的&#xff0c;这样的数据是用不了的 我们想要的是稳定的数据 此时我们引入滤波&#xff0c;把里面的噪声去掉&#xff0c;使得数据更平滑 适用系统&#xff1a; 符合两个特质&#xff1a;线性和高斯。 也叫线性高斯…

力扣顺序表思路讲解

本篇文章&#xff0c;我给大家带来的是顺序表题目讲解&#xff0c;希望大家看完有所收获&#xff0c;废话不多说&#xff0c;我们现在开始 审题 大白话&#xff1a;给了一个数组和一个目标值。如果数组里的两个元素相加 目标值&#xff0c;则返回这两个元素的下标。那么大家需…

中霖教育:考下注册会计师能从事哪些工作?

考下注册会计师能够从事哪些工作&#xff1f; 1 企业从事会计和财务工作 大部分的CPA持证人&#xff0c;会在企业里&#xff0c;从事会计和财务工作。但是能拿到多少薪资&#xff0c;也要看你所进入的平台。如果是小企业&#xff0c;实力一般&#xff0c;也就几干块工资。如果…

AI大模型应用与实践指南

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

系统图表:洞察数据的价值与魅力

在数字化、信息化迅猛发展的今天&#xff0c;数据已经成为企业决策、科学研究、社会管理等领域的核心资源。而如何高效、准确地理解和利用这些数据&#xff0c;成为摆在我们面前的重要课题。系统图表作为数据可视化的重要呈现工具&#xff0c;不仅能帮助我们洞察数据的内在规律…

Transformer详解:从放弃到入门(完结)

前几篇文章中&#xff0c;我们已经拆开并讲解了Transformer中的各个组件。现在我们尝试使用这些方法实现Transformer的编码器。   如图所示&#xff0c;编码器(Encoder)由N个编码器块(Encoder Block)堆叠而成&#xff0c;我们依次实现。 class EncoderBlock(nn.Module):def …

粤港澳青少年信息学创新大赛 Python 编程竞赛(初中部分知识点整理)

一、考试大纲梳理 知识内容 知识目标 计算机基础与编程环境&#xff0c;历史&#xff0c;存储与网络变量定义和使用基本数据类型&#xff08;整型&#xff0c;浮点型&#xff0c;字符型&#xff0c;布尔型&#xff09;&#xff0c;数据类型的转换控制语句结构&#xff08;顺序…

车规级低功耗汽车用晶振SG-9101CGA

车规级晶振SG-9101CGA属于爱普生9101系列&#xff0c;是一款可编程晶振。SG-9101CGA车规级晶振采用2.5x2.0mm封装&#xff0c;利用PLL技术生产&#xff0c;此款振荡器的频率范围从0.67M~170MHZ任一频点可选&#xff0c;步进1ppm&#xff0c;采用标准CMOS输出&#xff0c;最大输…

极验4 一键解混淆

提示&#xff01;本文章仅供学习交流&#xff0c;严禁用于任何商业和非法用途&#xff0c;未经许可禁止转载&#xff0c;禁止任何修改后二次传播&#xff0c;如有侵权&#xff0c;可联系本文作者删除&#xff01; AST简介 AST&#xff08;Abstract Syntax Tree&#xff09;&a…

【Redis7】10大数据类型之Zset类型

文章目录 1.Zset类型2.常用命令3.示例3.1 ZADD,ZRANGE和ZREVRANGE3.2 ZSCORE,ZCARD和ZREM3.3 ZRANGEBYSCORE和ZCOUNT3.4 ZRANK和ZREVRANK3.5 Redis7新命令ZMPOP 1.Zset类型 Redis的Zset&#xff08;Sorted Set&#xff0c;有序集合&#xff09;是一种特殊的数据结构&#xff0…

【教学类-18-03】20240508《蒙德里安“红黄蓝黑格子画”-A4横版》(大小格子)

作品展示 背景需求&#xff1a; 2年前制作了蒙德里安随机线条 【教学类-18-02】20221124《蒙德里安“红黄蓝黑格子画”-A4竖版》&#xff08;大班)_蒙德里安模版-CSDN博客文章浏览阅读1k次。【教学类-18-02】20221124《蒙德里安“红黄蓝黑格子画”-A4竖版》&#xff08;大班)…

ChIP-seq or CUTTag,谁能hold住蛋白质与DNA互作主战场?

DNA与蛋白质的相互作用作为表观遗传学中的一个重要领域&#xff0c;对理解基因表达调控、DNA复制与修复、表观遗传修饰&#xff08;组蛋白修饰&#xff09;及染色质结构等基本生命过程至关重要。 自1983年James Broach首次公布染色质免疫共沉淀&#xff08;ChIP&#xff09;技…

Docker-Compose 容器集群的快速编排

Docker-compose 简介 Docker-Compose项目是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层&#xff0c;分别是 工程&#xff08;project&#xff09;&#xff0c;服务&#xff08;service&#xff09;以及容器&…

LLM 安全 | 大语言模型应用安全入门

一、背景 2023年以来&#xff0c;LLM 变成了相当炙手可热的话题&#xff0c;以 ChatGPT 为代表的 LLM 的出现&#xff0c;让人们看到了无限的可能性。ChatGPT能写作&#xff0c;能翻译&#xff0c;能创作诗歌和故事&#xff0c;甚至能一定程度上做一些高度专业化的工作&#x…

滤除纹波的方法:

空载时看起来纹波比较小但是一加负载的时候纹波一下子上来是因为空载时候电流比较小MOS大部分时间处于关断状态&#xff0c;而加上负载后电流变大MOS打开关闭更为频繁&#xff0c;因而纹波更大。 下图中的尖峰可能是因为电路的寄生电感导致的&#xff0c;理论上只能削弱不能避…

LINUX 入门 8

LINUX 入门 8 day10 20240507 耗时&#xff1a;90min 有点到倦怠期了 课程链接地址 第8章 TCP服务器 1 TCP服务器的介绍 开始讲服务器端&#xff0c;之前是客户端DNShttps请求 基础&#xff1a;网络编程并发服务器&#xff1a;多客户端 一请求&#xff0c;一线程 veryold…

推荐网站(6)33台词,通过台词找电影、电视剧、纪录片等素材

今天推荐一个网站33台词&#xff0c;你可以根据电影、电视剧、纪录片等某一段台词&#xff0c;来找到来源&#xff0c;帮你精确到多少分多少秒出现的&#xff0c;非常的好用&#xff0c;尤其是对那种只记得一些经典台词&#xff0c;不知道是哪个电影的人来说&#xff0c;帮助巨…

揭秘全网热门话题:抖音快速涨粉方法,巨量千川投流助你日增10000粉

在当今社交媒体的时代( 千川投流&#xff1a;hzzxar&#xff09;抖音成为了年轻人分享自己才华和生活的平台。然而&#xff0c;要在抖音上快速获得关注和粉丝&#xff0c;却不是一件容易的事情。今天&#xff0c;我们将揭秘全网都在搜索的抖音快速涨1000粉的秘籍&#xff0c;带…
最新文章