【每日力扣】41. 缺失的第一个正数 238. 除自身以外数组的乘积 189. 轮转数组

在这里插入图片描述

🔥 个人主页: 黑洞晓威
😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害

41. 缺失的第一个正数

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。

请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

解题思路

要找到未排序的整数数组中没有出现的最小正整数,并且要求使用 O(n) 时间复杂度和常数级别额外空间,可以通过数组索引的映射来实现。

  1. 首先遍历数组,将所有正整数放到对应的索引位置,负数和大于数组长度的数无需处理。
  2. 然后再次遍历数组,查找第一个索引位置与数值不对应的情况,这个索引加 1 即为缺失的最小正整数。

代码实现

class Solution {public int firstMissingPositive(int[] nums) {int n = nums.length;// 将所有正整数放到对应的索引位置for (int i = 0; i < n; i++) {while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {int temp = nums[nums[i] - 1];nums[nums[i] - 1] = nums[i];nums[i] = temp;}}// 查找第一个索引位置与数值不对应的情况for (int i = 0; i < n; i++) {if (nums[i] != i + 1) {return i + 1;}}return n + 1;}
}

238. 除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。

请 **不要使用除法,**且在 O(*n*) 时间复杂度内完成此题。

解题思路

在不使用除法并且在 O(n) 时间复杂度内完成此题的要求下,可以使用两次遍历来实现。具体思路如下:

  1. 第一次遍历:从左向右计算每个元素左边所有元素的乘积,保存在一个数组中。
  2. 第二次遍历:从右向左计算每个元素右边所有元素的乘积,与第一步中计算的结果相乘得到最终结果。

代码实现

class Solution {public int[] productExceptSelf(int[] nums) {int n = nums.length;int[] result = new int[n];// 第一次遍历,计算每个元素左边所有元素的乘积int left = 1;for (int i = 0; i < n; i++) {result[i] = left;left *= nums[i];}// 第二次遍历,右边所有元素的乘积与之前计算的结果相乘得到最终结果int right = 1;for (int i = n - 1; i >= 0; i--) {result[i] *= right;right *= nums[i];}return result;}
}

189. 轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

解题思路

要将数组中的元素向右轮转k个位置,可以通过三次反转数组的操作来实现。

  1. 将整个数组反转。
  2. 将前k个元素反转。
  3. 将剩余的n-k个元素反转。

代码实现

class Solution {public void rotate(int[] nums, int k) {int n = nums.length;k = k % n; // 如果k大于数组长度,取余数// 翻转整个数组reverse(nums, 0, n - 1);// 翻转前k个元素reverse(nums, 0, k - 1);// 翻转剩余的元素reverse(nums, k, n - 1);}private void reverse(int[] nums, int start, int end) {while (start < end) {int temp = nums[start];nums[start] = nums[end];nums[end] = temp;start++;end--;}}
}

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

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

相关文章

Linux 操作系统的引导过程

Linux系统开机引导过程&#xff1a; 开机自检 检测硬件设备&#xff0c;找到能够引导系统的设备&#xff0c;比如硬盘MBR引导 运行MBR扇区里的主引导程序GRUB启动GRUB菜单 系统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和…

API 开发的后盾:平台工程提供强力动态支持

过去几年&#xff0c;开发团队一直在发展传统的 DevOps。一些开发人员认为&#xff0c;CloudOps 或 DeploymentOps 等新实践的兴起将会导致回到孤岛问题。其他人则不愿意在承担所有其他职责之外构建、部署、运行和维护运维。显然&#xff0c;确实需要新的云原生开发策略&#x…

YesPMP众包平台最新项目

YesPMP一站式互联网众包平台&#xff0c;最新外包项目&#xff0c;有感兴趣的用户可进入平台参与竞标。 &#xff08;竞标后由项目方直接与服务商联系&#xff0c;双方直接对接&#xff09; 1.查看项目&#xff1a;个人技术-YesPMP平台 2.查看项目&#xff1…

用Python编写一个简单的数字累加器 数字累加器

目录 一.总体说明 二.完整代码 三.逐行分析 一.总体说明 数字累加器是一种用于对数字进行持续累加的设备或算法。它可以在每次输入一个数字时将其与之前的累加结果相加,并更新累加结果。数字累加器通常用于计算总和、平均值或其他需要对连续数字进行累加的应用场景。 在计…

Android apk打包有so,运行没有so

Android apk打包有so&#xff0c;运行没有so 当minSdkVersion版本从19变成26时&#xff0c;编译打包后&#xff0c;安装到设备里发现 /data/data//lib 目录下没有so库&#xff0c;在AndroidManifest文件application标签下增加android:extractNativeLibs"true"后&…

命名空间:namespace

对于无名命名空间 &#xff1a;但是不能再次定义相同名称的变量 在同一文件中

CUDA 下 DGL 库安装

https://www.dgl.ai/pages/start.html pip install dgl -f https://data.dgl.ai/wheels/cu121/repo.html成功o(&#xffe3;▽&#xffe3;)ブ ⭐⭐

jvm知识点总结(一)

JVM的跨平台 java程序一次编写到处运行。java文件编译生成字节码&#xff0c;jvm将字节码翻译成不同平台的机器码。 JVM的语言无关性 JVM只是识别字节码&#xff0c;和语言是解耦的&#xff0c;很多语言只要编译成字节码&#xff0c;符合规范&#xff0c;就能在JVM里运行&am…

上海·得物技术沙龙-「无线技术」专场报名开启!

本次无线沙龙聚焦于最新的技术趋势和实践&#xff0c;将在上海/线上为你带来四个令人期待的演讲话题&#xff0c;包括&#xff1a;《快手主App启动接口带宽优化实践》、《得物App视频体验优化实践》、《Chromium内核架构和网络库优化介绍》、《得物App发热监控实践》。相信这些…

深入理解Linux文件系统和日志分析

目录 一.inode与block 1.inode与block概述 1.1.文件数据包括元信息与实际数据 1.2.文件存储在硬盘上&#xff0c;硬盘最小存储单位是“扇区”&#xff0c;每个扇区存储512字节 1.3.block&#xff08;块&#xff09; 1.4.inode&#xff08;索引节点&#xff09; 2.inode内…

springboot论文格式系统

采用springbootmysqlhtmlvue技术 详细运行视频地址B站运行效果视频地址 &#xff08;1&#xff09;系统具备用户管理功能&#xff0c;包括用户注册、登录、权限管理等功能。 &#xff08;2&#xff09;系统具备格式规范管理功能&#xff0c;包括格式规范创建、编辑、删除等操…

【Day 8】MySQL 多表查询 + Mybatis 基础

1 多表查询 笛卡尔积&#xff1a;在数学中&#xff0c;两个集合(A集合 和 B集合)的所有组合情况 在多表查询时&#xff0c;需要消除无效的笛卡尔积 select * from tb_emp,tb_dept where dept_id tb_dept.id;多表查询分为&#xff1a; 连接查询 内连接&#xff1a;相当于查…

FTP与SMB深度对比:文件传输协议谁更胜一筹?

在数字化时代&#xff0c;文件传输已成为日常工作中不可或缺的一部分。 FTP&#xff08;文件传输协议&#xff09;和SMB&#xff08;服务器消息块&#xff09;是两种最为常见的文件传输协议。它们各自在文件传输领域拥有独特的优势和特点&#xff0c;但同时也存在一些差异。 今…

学会MySQL(2)——间隙锁加锁算法分析

间隙锁加锁算法分析 引言 在进行死锁分析时&#xff0c;如果看 MySQL 的死锁日志云里雾里&#xff0c;那可能是我们对 MySQL 的加锁规则不甚了解&#xff0c;从而感觉分析无从下手。只能看代码&#xff0c;改 SQl 碰运气。有一句话说的好&#xff1a;我也不知道为什么这么改就…

【Linux】动态库与静态库

文章目录 1. 认识静态库与动态库2. 手动创建并测试静态库2.1 生成静态库2.2 打包静态库2.3 使用静态库 3. 库搜索路径4. 手动创建并测试动态库4.1 生成动态库4.2 打包动态库4.3 使用动态库 5. 动静态库优先级 1. 认识静态库与动态库 静态库&#xff08;.a&#xff09;&#xf…

EF linq中First、FirstOrDefault、Single、SingleOrDefault方法的使用场景

在 Entity Framework (EF) 中&#xff0c;First、FirstOrDefault、Single 和 SingleOrDefault 方法用于从查询结果中检索单个元素。这些方法在使用 LINQ 查询时非常有用&#xff0c;但它们各自有不同的使用场景。 First 方法 First 方法用于从结果集中返回第一个匹配条件的元素…

基于深度学习网络的十二生肖图像分类matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................... for i 1:16subplot(4,4,…

真的通俗易懂!差分信号电路的解读

目录 一、什么是差分运放电路 二、差分运放电路的工作状态 一、什么是差分运放电路 差分电路是具有对共模信号抑制&#xff0c;对差模信号放大特征的电路。该电路的两个信号输信号的差值是该电路的有效值。将这两信号输入只差进行放大后输出。如果存在干扰信号&#xff0c;会…

PyTorch的基本概念及使用场景

PyTorch是一个用于构建动态计算图的开源机器学习框架。它由Facebook的人工智能研究团队开发&#xff0c;并于2017年发布。PyTorch提供了丰富的工具和库&#xff0c;使用户能够轻松地构建和训练神经网络模型。 PyTorch的核心概念是张量&#xff08;tensor&#xff09;和自动求导…

H264 编码标准常见术语解释

H264 编码标准 H.264编码标准&#xff0c;也被称作MPEG-4 AVC&#xff08;Advanced Video Coding&#xff09;&#xff0c;是一种被广泛使用的数字视频压缩标准&#xff0c;由国际电信联盟&#xff08;ITU-T&#xff09;和国际标准化组织&#xff08;ISO&#xff09;共同开发。…