代码随想录算法训练营第二天

2023-10-27

Leetcode977.有序数组的平方

题目链接

关键词:双指针

问题思路:给一个非递减数组,返回平方后的非递减数组,忽略非递减的条件我们可以直接对原数组进行平方然后排序,显然这样对原数组的性质运用不完全,如何体现非递减的性质?发现新数组的最大值一定是原数组的首尾项中较大的一项,故而想到采用双指针指向首尾

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int numsLength = nums.size();
        vector<int> result(numsLength, 0);
        int left = 0, right = numsLength - 1;
        for (int i = numsLength - 1; i >= 0; --i) {
            if (nums[left] * nums[left] >= nums[right] * nums[right]) {
                result[i] = nums[left] * nums[left];
                ++left;
            }
            else{
                result[i] = nums[right] * nums[right];
                --right;
            }
        }
        return result;
    }
};

反思:将双指针的思路融入思考而不是机械化的套

Leetcode209.长度最小的子数组

题目链接

关键词:滑动窗口

问题思路:滑动窗口本质也是双指针,在使用滑动窗口时想清楚几个问题,1.左边界与右边界谁是主要边界,谁是因变量?2.次要边界维护的原则是什么?

借此再次强调双指针的关键在于无回溯,两个指针都朝着某个方向单调移动,因此时间复杂度大大降低

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int sum = 0;
        int result = INT32_MAX;
        int i = 0;
        for (int j = 0; j < nums.size(); ++j) {
            sum += nums[j];
            while (sum >= target) {
                int length = j - i + 1;
                if (result > length) result = length;
                sum -= nums[i];
                ++i;
            }
        }
        if (result == INT32_MAX) return 0;
        return result;
    }
}

反思:双指针多用于数组,链表,其作用在于利用线性表自身的性质减小时间复杂度

Leetcode59.螺旋矩阵II

关键词:拆解问题

问题思路:乍一看是很简单的问题,实际操作时会发现无从下手,在遇到这种问题时我们考虑两个问题,1.能否通过减小问题规模突出问题的关键?2.能否把该问题转化为其他几个同类的子问题?

而后发现我们把构造螺旋矩阵转化为构造单层螺线圈,把构造单层螺线圈转化为构造构造四个等长度小长方形,故而两层for循环解决问题

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> generateMatrixNew(n, vector<int>(n, 0));
        int num = 1;
        int loop = n / 2;
        for (int i = 0; i < loop; ++i) {
            for (int j = i; j < n - i - 1; ++j) {
                generateMatrixNew[i][j] = num;
                num++;
            }
            for (int j = i; j < n - i - 1; ++j) {
                generateMatrixNew[j][n - i - 1] = num;
                num++;
            }
            for (int j = n - i - 1; j > i; --j) {
                generateMatrixNew[n - i - 1][j] = num;
                num++;
            }
            for (int j = n - i - 1; j > i; --j) {
                generateMatrixNew[j][i] = num;
                num++;
            }
        }
        if (n % 2 == 1) generateMatrixNew[n / 2][n / 2] = num;
        return generateMatrixNew;
    }
};

反思:考察一种泛化的问题建模思维

今日学习:2.5h

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码随想录算法训练营第二天 的相关文章

  • OpenSSL:RSA 加密/解密、密钥生成和密钥持久性

    我正在尝试构建一个需要以下内容的 p2p 应用程序 在 OpenSSL 中使用 RSA Encryption Decryption Generating Keys done Saving and loading keys done Savi
  • 为什么这个 IA32 汇编代码有 3 个 leaal 指令?

    我编译了这个C函数 int calc int x int y int z return x 3 y 19 z 我在 calc s 中得到了这个 我正在注释正在发生的事情 file calc c text globl calc type ca
  • Cocoa 常量名称中的“k”代表什么[重复]

    这个问题在这里已经有答案了 可能的重复 Apple 的 API 中的 k 前缀表示什么 https stackoverflow com questions 675816 what does the k prefix indicate in
  • 动态库使用静态库,出现未定义的符号

    我一直在寻找解决问题的方法 只是得到了一些线索 但我找不到任何一致的解决方案 我有一个动态库 libdyna so 的代码 它使用3个静态库 libone a libtwo a lib Three a 和log4cpp库的功能 当我第一次构
  • 具有自动返回类型推导的 Friend 函数模板无法访问私有成员

    抱歉这个问题的标题太复杂了 我试图描述我为这个问题构建的最小 SSCCE 我有以下代码 include
  • ExecuteNonQueryAsync 并在 SQL 事务中提交

    我正在寻求对我创建的一段代码的帮助 我正在尝试在事务中从 C 进行异步 SQL 调用 例如我可能正在更新或删除表中的行 这是我到目前为止所拥有的 但我似乎无法找到有关在事务中执行此操作的太多信息 根据我在这里所拥有的以及到目前为止我所理解的
  • 在 C# 中格式化 Resharper 属性的支持字段

    有没有办法控制 Resharper 放置其支持字段的位置 目前 它试图让他们在班级中名列前茅 我希望他们能去到酒店的正上方 还没有
  • Motif 库的水平绘制的 RowColumn 类 (C)?

    我正在使用 Motif Library 来完成我的工作 如果有人不熟悉这个库 您可以在这里找到文件列表https packages ubuntu com xenial amd64 libmotif dev filelist https pa
  • 安装/编译 pylzma(lzma python 绑定)

    我已经向作者提出了这个问题website http www joachim bauch de projects pylzma comment page 1 comment 5211 但我想我也可以在这里问 我一直在尝试使用以下设置安装 py
  • 从 pdf 和 word 文件中提取文本

    如何在 C 中从 pdf 或 word 文件中提取文本 删除粗体 图像和其他富文本格式媒体 您可以使用专为索引服务设计 由索引服务使用的过滤器 它们旨在从各种文档中提取纯文本 这对于在文档内部进行搜索非常有用 您可以将其用于 Office
  • 如何使用 CMake 链接多个库

    我有一些与 DCMTK 相关的代码 如果我从命令行使用 g 我可以成功构建并运行它 这是代码 include dcmtk config osconfig h include dcmtk dcmdata dctk h int main Dcm
  • 使用 MemoryCache 而不是普通的旧 Dictionary 的令人信服的理由是什么

    我刚刚遇到内存缓存 http msdn microsoft com en us library system runtime caching memorycache aspx这是 NET 4 中的新增功能 我知道如果你想的话它会很有用 限制
  • 在实体框架中不使用 Dispose 或 using()

    我一路上正在编写一个网络应用程序并学习实体框架 如果我做错了什么 我很好奇 我在查询时没有使用过 dispose 或 using 语句 我的存储库示例 public User GetUserById int sessionId var us
  • 使用 C# 在 XML 文档中查找特定值的好方法是什么?

    我正在调用 Oracle 公开的 WebService 它接受 ItemID 的输入并向我返回相应的 Item Number 我想获取从响应中包含的 XML 返回的项目编号 XML 看起来像这样
  • WiX 安装程序在 vs 2012 上不起作用

    我想为我的应用程序创建一个安装程序 我已经下载了 WiX 3 6 并将其安装在 vs 2012 上 创建简单的winform应用程序 将 WiX 安装项目添加到我的解决方案中 右键单击参考并将我的 winform 应用程序添加到安装程序的参
  • OpenFileDialog 中的多个文件扩展名

    如何在一组中使用多个文件扩展名OpenFileDialog 我有Filter BMP bmp GIF gif JPG jpg PNG png TIFF tiff 我想创建组 以便 JPG 为 jpg 和 jpeg TIFF 为 tif 和
  • 作为服务运行时,URLDownloadToFile() 将对象写入缓存中

    我有一个软件 可以将图像下载到工作目录中 然后对其进行处理以创建视频 之后 这些文件将被独立脚本删除 问题是它还将文件写入以下目录 该软件作为系统服务运行 C Windows SysWOW64 config systemprofile Ap
  • Pythonlibs3 CMake 和 macOS

    更新2 将以下两行添加到我的 CMake 文件中时 成功找到了 python 3 及其库 这只在终端中工作的原因是因为 CLion 使用其捆绑版本的 CMake 3 6 3 而我的终端使用的更新版本 3 7 2 正确找到了 python F
  • 成员函数的Decltype

    class A int f int x int j return 2 decltype f p 给我错误 error decltype cannot resolve address of overloaded function 我不明白为什
  • 如何用纯色填充位图?

    我需要使用唯一的 RGB 颜色创建 24 位位图 分辨率 100x100 像素 并将生成的图像保存到磁盘 我目前使用的是SetPixel http msdn microsoft com en us library 6c7eyzyb aspx

随机推荐

  • Elevator

    Elevator include
  • 超简单两步走解决Altium Designer 报错:Unknow Pin的解决方法

    AD 软件从原理图更新到PCB出现Unknow Pin 错误非常普遍 有因为元件封装问题 也有的是网络表问题 我找到一种超简单的解决办法 下图是一个超简单的运放电路 因为是一次画成并且已更新了PCB 并且没有出错 现在人为添上一个二极管 然
  • 基于单片机的空气质量监测

    设计简介 本设计是基于单片机的空气质量监测 主要实现以下功能 可实现LCD1602显示DS1302时间以及空气质量值 可通过按键对时间进行设置 可通过按键对空气质量阈值进行设置 可通过按键设置时间区间 当前时间在设置时间范围时 打开排风继电
  • php使用PhpSpreadsheet导入Excel表格

    一 安装 使用 composer 将 PhpSpreadsheet 安装到项目中 composer require phpoffice phpspreadsheet 二 导入 1 实例化读取类 文件格式是 xlsx 文件 objReader
  • 柚!音乐小程序 ---借鉴网易云APP设计(运用网易云真实Api)

    参考小破站小程序教程 通过点击每日推荐可以进行音乐播放 上一首下一首切换 前提要进行登录 最近可能登陆会有一些问题 运气好就登录进去了 服务器的问题 主要实现功能 点击每日推荐 会展示30首每日根据网易云推荐的歌曲 点击音乐进行播放 可以切
  • 6. 用Flask-Moment本地化日期和时间

    缘起 不同时区的时间不一样 而服务器要用的是统一的UTC时间 就跟实际中的格林威治时间一样 其他时区都以它为参考 这就需要服务器获取计算机本地的时间 一个elegant的解决方案是 把时间单位 time units 发送给Web浏览器 转换
  • unity3d实现模型点击事件

    一 实现 实现3D物体上的点击事件 点击物体Statue 01 弹出界面Image 二 Statue 01 代码 拖到Statue 01的Inspector面板上 using System Collections using System
  • 干货分享 - MatLab

    目录 1 前言 2 Latex基础 3 Latex尝鲜 4 Latex在MatLab中换行 5 Latex在MatLab中小花招 6 附录1 Tex对照表 7 附录2 常用Tex字符 1 前言 LaTeX语言作为应用最广泛的Tex格式 Te
  • 树莓派的蓝牙通讯(BLUEZ、GATTLIB)

    一 准备工作 我使用的蓝牙模块是大夏龙雀的DX BT16 支持BLE4 2协议 树莓派的型号为4b 操作系统为64位的ubuntu 18 04 提前说明一下 因为我没有安装桌面 所以很多工具都需要自己手动安装 首先先创建一个root用户 方
  • 学习typeScript写服务(nestjs)【四,掉接口将数据展示前端页面(vue3+ts)】

    文章目录 前言 一 安装elementUI 二 搭建路由及静态页面 1 路由搭建 2 静态页面 三 封装axios请求 1 首先安装axios 2 请求封装 四 页面掉接口实现增删改查 1 先在创建一个文件用于存放接口的 2 页面实现增删改
  • Python3 下载图片的几种方式速度对比

    Python3 下载图片的几种方式速度对比 import os import time import urllib3 import requests from PIL import Image from io import BytesIO
  • Gradle版本对应版本号

    Gradle版本对应版本号
  • 解决找不到依赖项的问题(根源直接解决)

    文章最后 我会介绍一个万能解决方法 问题 原因 1 可能是你的本地仓库里没有该依赖项 2 如果有的话 可能是没有更新同步到idea 解决方法 1 如果是你的本地仓库里没有该依赖项 你可以去Maven的Setting文件中添加albaba的镜
  • 假如生命是乏味的,我怕有来生;假如生命是有趣的,今生已是满足。

    假如生命是乏味的 我怕有来生 假如生命是有趣的 今生已是满足 冰心 生活是个爱开玩笑的孩子 也许今天给你所有 明天让你一无所有 不管生活有多么曲折 只要拥有幸福的态度就能挺过漫漫长夜 就能迎来美好的明天 再重的担子 笑着也是挑 哭着也是挑
  • 安装nrm后运行nrm命令报错解决方法

    安装 node js 会自动也安装 npm npm 下载东西速度比较慢 可以使用 npm 下载 nrm 镜像包 npm install g nrm 安装好 nrm 之后 运行 nrm ls 命令 结果报错 运行 nrm 其他命令也报错 如下
  • C++实现角度转弧度,亲测可用

    代码在这里 拿走不谢 C 实现角度转弧度 include
  • Highcharts error #16: www.highcharts.com/errors/16应该怎么解决

    highcharts error 16 项目用的highcharts 第一次刷新正常 第二次就出来这个错 一 问题 项目某一个页面用的highcharts用来显示一张图表 第一次刷新正常 第二次就出来这个错 二 解决问题过程 在网上找了很多
  • python保留小数

    1 1f value 1f value 1f 8 365 8 3 2f 8 365 8 36 2 可以通过字符串的方式进行截取 就是以 为分界线 将小数点之后的数字看为列表 s1 8 365 s1 list s1 split s1 new
  • 算法 - 剑指Offer 股票的最大利润

    题目 假设把某股票的价格按照时间先后顺序存储在数组中 请问买卖该股票一次可能获得的最大利润是多少 解题思路 这题解题思路较为简单 首先我们需要记录的两个变量 第一个为我们花费买入的点 满足的条件只要满足一点那就是要比前一个点要小 这样能赚的
  • 代码随想录算法训练营第二天

    Leetcode977 有序数组的平方 题目链接 关键词 双指针 问题思路 给一个非递减数组 返回平方后的非递减数组 忽略非递减的条件我们可以直接对原数组进行平方然后排序 显然这样对原数组的性质运用不完全 如何体现非递减的性质 发现新数组的