算法Day-2

27. 移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。

假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:

  • 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
  • 返回 k

当我对数组进行删除操作时,并不是直接将数组中的元素进行删除,而是将数组的元素进行覆盖,所以我们在移除数组元素时,第一种方法

就是直接暴力枚举查找到数组中与val的值相等的数然后将该值再进行一个循环将值逐步移动到数组末尾,并且因为此下标的数据已经发生改变,我们还需要再次确认是否等于val值,我们就可以将第一遍的循环中的i减一和for循环中的i++相互抵消,从而使其可以再此判断此下标的数据是否符合删除条件,还有我们将要删除的数据移动到数组的末尾处,我们再遍历时就不需要再次遍历此数据,所以我们可以在数组大小上进行减一,从而不去判断被删除的元素,和在返回数组大小时可以直接返回此数据。

int len = nums.Length;for(int i = 0;i<len;i++){if(nums[i]==val){for(int j = i+1;j<len;j++){nums[j-1] = nums[j];}i--;len--;}}return len;

还有一种方法通过双指针的方法查找和删除。

我们定义一个快指针一个慢指针,并且将慢指针进行初始化,使其数据为0;在for循环中进行对快指针进行初始化并且每循环一次加一,我们在循环下判断:如果快指针指向的数据不等于val,就将数据赋值给慢指针所指向的地址,这是因为如果不是val代表我们不去删除它,要保留它,慢指针就是负责保留我们不被删除的数据的,并将慢指针加一,准备记录下一个没有被删除的数据。如果快指针指向的数据等于val,就不用进行任何操作,直接让快指针进行下一次循环同时快指针根据循环加一。所以我们主要就是将不被删除的数据放在数组前方,并返回一个不被删除的数据的个数。

int slow = 0;for(int fast = 0;fast<=nums.Length-1;fast++){if(nums[fast]!=val){nums[slow] = nums[fast];slow++;}}return slow;

977. 有序数组的平方

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

示例 1:

输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]

示例 2:

输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]

读题之后我们思考,本题是将一个非递减的数组进行平方然后组成新的数组,并返回,最简单的方法是将数组数据平方后再进行排列。

这里我们用双指针的思想来做,定义两个指针,一个左指针一个右指针,一个指向数组下标0位置,一个指向数组末尾。定义一个和nums大小相等的数组res,用while循环(left《=right)当left大于right结束循环,比较左指针的平方和右指针的平方哪个大,将其平方值赋值到res数组的末端并将末端向前移一位,并将大的指针向中间移一位。

public class Solution {public int[] SortedSquares(int[] nums) {int[] res = new int[nums.Length];int left = 0;int right = nums.Length-1;int x = right;while(left<=right){if(nums[left]*nums[left]<nums[right]*nums[right]){res[x--]=nums[right]*nums[right];right--;}else{res[x--] = nums[left]*nums[left];left++;}}return res;}
}

209. 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其总和大于等于 target 的长度最小的 

子数组

 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

本题题意是给一个数组,然后给一个正整数,如果有连续的数据并且相加起来大于target就将其记录起来。寻找最少数据相加大于target的连续数据。

这里我们使用滑动窗口思想进行解题,定义两个指针一个快一个慢,快指针不断循环增加,并且将每次的数据加入进sum中,sum每次进行与target进行比较,如果大于target进入循环,并记录当前的数据长度,和最终数据长度进行比较如果大于最终数据长度的话就替换最终数据长度,以确保最终数据长度一直处于最小,并且sum不断减去慢指针对应的数据慢指针不断增大,不断更新最小最终长度,直到sum小于了target,然后再去进行快指针的循环,如此往复。

public class Solution {public int MinSubArrayLen(int target, int[] nums) {int slow = 0;int sum = 0;int x = 0;int result = int.MaxValue;for(int fast = 0;fast<=nums.Length-1;fast++){sum+=nums[fast];while(sum>=target){x = fast-slow+1;result  = result>x?x:result;sum-=nums[slow];slow++;}}return result == int.MaxValue ? 0 : result;}
}

本题给一个正整数,需要生成1到n平方的所有元素,并将元素排列成为顺时针的矩阵。

本题涉及到边界的概念,使用左闭右开的原则,我们在对矩阵进行赋值时需要从上到下从左到右,先确认循环条件为(number<n*n)先遍历最上面一排,用number进行赋值后加一并且不对每一排的最后一个位置进行赋值,让其在下一行赋值中充当首位如此往复,直到number大于N*N。如果是n是奇数就将在遍历结束后判断,将最后一个值赋值给中间位置。

public class Solution {public int[][] GenerateMatrix(int n) {int[][] res = new int[n][];for(int i = 0;i<n;i++) res[i] = new int[n];int start = 0;int tail = 1;int number = 1;while(number<n*n){int j ;int i ;for(j = start;j<n-tail;j++){res[start][j] = number++;}for(i = start;i<n-tail;i++){res[i][j] = number++;}for(;j>start;j--){res[i][j] = number++;}for(;i>start;i--){res[i][j] = number++;}start++;tail++;}if (n % 2 == 1) {res[start][start] = number;}return res;}
}

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

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

相关文章

zotero下载、安装、翻译和显示无法安装插件“%S”的解决办法

文章目录 zotero下载和安装和翻译还有插件英文翻译软件遇到的问题 zotero下载和安装和翻译还有插件 Zotero从入门到精通第一期–如何省心省力翻译科研文献&#xff0c;这里面主要是使用小牛翻译的过程&#xff0c;输入产品密匙需要加入个人的账号密码进行sign in 英文翻译软件…

动态规划17:123. 买卖股票的最佳时机 III

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;123.…

递归神经网络(RNN)简介

递归神经网络简介 在本文中,我们将介绍神经网络的一种新的变体,即递归神经网络,也称为 (RNN),当数据是连续的时,如时间序列数据和文本数据,它比简单的神经网络效果更好。 什么是递归神经网络 (RNN)? 循环神经网络 (RNN) 是一种神经网络,其中上一步的输出作为当前…

Quarto ppt模板制作与Rstudio git连接

本篇记录下当前ppt演示中比较流行的quarto document使用情况以及Rstudio与git相连接的一些实操。 1 Quarto ppt模板制作 1.1 Quarto简介&#xff08;来自Kimi&#xff09; Quarto 是一个由 RStudio 的母公司 Posit 团队开发的开源科学和技术出版系统&#xff0c;它建立在 Pan…

计算机网络——传输层服务

传输层会给段加上目标ip和目标端口号 应用层去识别报文的开始和结束

upload-labs靶场Pass-01

upload-labs靶场Pass-01 分析 查看提示&#xff0c;提示如下 查看源码 function checkFile() {var file document.getElementsByName(upload_file)[0].value;if (file null || file "") {alert("请选择要上传的文件!");return false;}//定义允许上传…

Java-类与对象-下篇

关于类与对象&#xff0c;内容较多&#xff0c;我们分为两篇进行讲解&#xff1a; &#x1f4da; Java-类与对象-上篇&#xff1a;————<传送门:Java-类与对象-上篇-CSDN博客> &#x1f4d5; 面向对象的概念 &#x1f4d5; 类的定义格式 &#x1f4d5; 类的使用 …

ubuntu 安装nginx

sudo apt-get update sudo apt-get install nginx sudo nginx -vsudo systemctl status nginx sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx#浏览器输入&#xff1a;http://192.168.31.181/#查看文件结构 cd /etc/nginx sudo cp nginx.…

Java 类和对象详解(下)

个人主页&#xff1a;鲤鱼王打挺-CSDN博客 目录 &#x1f497;前言&#xff1a; &#x1f4af;一.static关键字 1. 为什么要使用static 2. static 修饰成员变量&#xff1a; 3. static 修饰成员方法&#xff1a; ​编辑 4. 静态代码块 5.静态导入包 &#x1f4af;二.…

Wi-Fi安全性入门(基于ESP-IDF-v4.4)

主要参考资料&#xff1a; Wi-Fi 安全性: https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.4/esp32/api-guides/wifi-security.html 目录 1.ESP32 Wi-Fi 安全功能1.1 受保护的管理帧 (PMF)1.2 第三代 Wi-Fi 访问保护 (WPA3-Personal) 1.ESP32 Wi-Fi 安全功能 支…

linux系统之jar启动脚本

编辑linux启动脚本 执行 vi run_blog 按i 进入编辑&#xff0c;复制以下代码&#xff0c;并根据当前环境修改三个参数。以下是详细完整脚本代码&#xff1a; #!/bin/bash# 配置部分 JAR_PATH"/path/to/your/app.jar" # 替换为你的 JAR 文件的实际路径 L…

Gin框架操作指南07:路由与中间件

官方文档地址&#xff08;中文&#xff09;&#xff1a;https://gin-gonic.com/zh-cn/docs/ 注&#xff1a;本教程采用工作区机制&#xff0c;所以一个项目下载了Gin框架&#xff0c;其余项目就无需重复下载&#xff0c;想了解的读者可阅读第一节&#xff1a;Gin操作指南&#…

【JVM】内存模型

文章目录 内存模型的基本概念案例 程序计数器栈Java虚拟机栈局部变量表栈帧中局部变量表的实际状态栈帧中存放的数据有哪些 操作数栈帧数据 本地方法栈 堆堆空间是如何进行管理的? 方法区静态变量存储 直接内存直接内存的作用 内存模型的基本概念 在前面的学习中,我们知道了字…

Java 8 Stream API:从基础到高级,掌握流处理的艺术

一、Stream&#xff08;流&#xff09;基本介绍 Java 8 API 添加了一个新的抽象称为Stream&#xff08;流&#xff09;&#xff0c;可以让你以一种声明的方式处理数据&#xff0c;这种风格将要处理的元素集合看做一种流&#xff0c;元素流在管道中传输&#xff0c;并在管道中间…

云黑系统全解无后门 +搭建教程

这套系统呢是玖逸之前南逸写的一套云黑系统&#xff0c;功能带有卡密生成和添加黑名单等&#xff0c;源码放在我的网盘里已经两年之久&#xff0c;由于玖逸现在已经跑路了所以现在发出来分享给大家&#xff0c;需要的可以自己拿去而开&#xff0c;反正功能也不是很多具体的自己…

电脑视频剪辑大比拼,谁更胜一筹?

随着短视频的火爆&#xff0c;越来越多的人开始尝试自己动手制作视频&#xff0c;无论是记录生活点滴还是创作个性短片&#xff0c;一款好用的视频剪辑软件是必不可少的。今天&#xff0c;我们就从短视频运营的角度&#xff0c;来聊聊几款热门的电脑视频剪辑软件&#xff0c;看…

docker配置加速器

阿里云 控制台》容器镜像服务》镜像工具》镜像加速器 复制地址&#xff1a;https://ywtoq7bz.mirror.aliyuncs.com 到&#xff1a;etc/docker下&#xff1a;vi daemon.json 格式&#xff1a; { "registry-mirrors": ["加速器地址"] } 注&#xff1…

JavaScript:闭包、防抖与节流

一&#xff0c;闭包 1&#xff0c;什么是闭包 闭包是指一个函数和其周围的词法环境(lexical environment)的组合。 换句话说&#xff0c;闭包允许一个函数访问并操作函数外部的变量。 闭包的核心特性: 函数内部可以访问外部函数的变量即使外部函数已经返回&#xff0c;内部…

一款新开源跨平台的.NET Word(docx)模版导出引擎,完美支持Linux和Mac操作系统(附源码)

前言 在数字化办公日益盛行的今天&#xff0c;文档处理成为了我们日常工作不可或缺的一部分。然而&#xff0c;许多传统的文档处理工具都依赖于特定的操作系统和复杂的组件安装&#xff0c;这无疑给跨平台办公带来了诸多不便。为了解决这一问题&#xff0c;我们找到了一个新的…

【MR开发】在Pico设备上接入MRTK3(一)——在Unity工程中导入MRTK3依赖

写在前面的话 在Pico上接入MRTK3&#xff0c;目前已有大佬开源。 https://github.com/Phantomxm2021/PicoMRTK3 也有值得推荐的文章。 MRTK3在PICO4上的使用小结 但由于在MacOS上使用MRTK3&#xff0c;无法通过Mixed Reality Feature Tool工具管理MRTK3安装包。 故记录一下…