计算机创新协会冬令营——暴力枚举题目03

经过昨天两道题目的洗礼今天应该是更加的手到擒来吧。接招!

题目

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。(这里先不管,因为力扣这里的测试用例比较少,所以使用暴力枚举依然可以AC题目,我等一下会给出复杂度为logn的方法,对就是二分)

示例

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4

提示

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 为 无重复元素 的 升序 排列数组
  • -104 <= target <= 104

Java题解一:暴力枚举

其实这种找什么值的方法,只要是测试用例比较小的,都可以用暴力枚举跑出来,当然了,一般都会有对应的优化方法。这里只需要挨个的找寻目标值或者需要插入的位置即可。一层for循环,比较简单。

class Solution {public int searchInsert(int[] nums, int target) {int res = 0;// 由题目可知,已经是排序数组了,单调递增for (int i = 0; i < nums.length; i++) {// 如果等于目标值if (nums[i] == target){res =  i;}// 不等于,但是符合在中间插入的条件if ( i < nums.length - 1 && nums[i] < target && target < nums[i + 1]){res =  i + 1;}}// 上面两种情况都不满足,但是满足尾部插入的条件if (target > nums[nums.length - 1]){res = nums.length;}return res;}
}

Java题解二:二分查找

在冬令营之后会涉及到二分查找,这也是比较基础的算法内容,因此现在可以理解一下,如果不理解的话先看看,毕竟“熟读唐诗三百首,不会作诗也会吟”是吧,有余力的同学可以看一看。

而且仔细观察题目,要求使用logn复杂度的算法,说的就基本上是二分了

class Solution {public int searchInsert(int[] nums, int target) {//其实在这里看见是一个logn级别的算法那么就已经说明了//这道题需要使用二分查找了int left = 0;int right = nums.length - 1;//在这里采用左闭右闭的原则int middle = 0;while(left <= right){middle = left + (right - left) / 2;if(nums[middle] > target){// 右指针移动right = middle - 1;}else if(nums[middle] < target){// 左指针移动left = middle + 1;}if(nums[middle] == target){// 找到目标值return middle;}}return left;}
}

其他语言解法

C++
class Solution {
public:int searchInsert(vector<int>& nums, int target) {int res = 0;// 由题目可知,已经是排序数组了,单调递增for (int i = 0; i < nums.size(); i++) {// 如果等于目标值if (nums[i] == target) {res = i;}// 不等于,但是符合在中间插入的条件if (i < nums.size() - 1 && nums[i] < target &&target < nums[i + 1]) {res = i + 1;}}// 上面两种情况都不满足,但是满足尾部插入的条件if (target > nums[nums.size() - 1]) {res = nums.size();}return res;}
};
Python3

 

class Solution:def searchInsert(self, nums: List[int], target: int) -> int:res = 0# 由题目可知,已经是排序数组了,单调递增for i in range(len(nums)):# 如果等于目标值if nums[i] == target:res = i# 不等于,但是符合在中间插入的条件if i < len(nums) - 1 and nums[i] < target and target < nums[i + 1]:res = i + 1# 上面两种情况都不满足,但是满足尾部插入的条件if target > nums[-1]:res = len(nums)return res

总结

简单的遍历,可以适当理解一下二分。

ヾ( ̄▽ ̄)Bye~Bye~

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

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

相关文章

2024,这将是量子计算的真正挑战

2023年&#xff0c;一项项量子计算纪录被打破。 谷歌量子AI团队证明了将多个量子比特分组合成为一个逻辑量子比特的纠错方法可以提供更低的容错率。以往的纠错研究随着比特数的增加&#xff0c;错误率会提高&#xff0c;都是“越纠越错”&#xff0c;而这次谷歌首次实现了“越纠…

Python Pillow(PIL)库的用法介绍

在Python编程中&#xff0c;图像处理是一个非常重要的应用领域。Pillow&#xff08;Python Imaging Library&#xff0c;也被称为PIL&#xff09;是一个强大的库&#xff0c;用于处理图像&#xff0c;包括图像的读取、编辑、保存等操作。本文将详细介绍Pillow库的用法。 一、安…

2024.1.3C语言补录 宏函数

在C语言中&#xff0c;宏函数可以使用预处理器指令 #define 来定义。宏函数与常规函数类似&#xff0c;但它们在预处理阶段进行替换&#xff0c;而不是在运行时。 定义:#define 宏名称(参数列表) 宏体 其中&#xff1a; #define 是预处理器指令&#xff0c;用于定义宏。宏名…

Python入门-实战练习-基于函数

1.编写函数 实现计算列表中元素的最大值 需求&#xff1a; 随机产生10个元素&#xff0c;存储到列表中&#xff0c;编写函数获取这个列表中元素的最大值 (不能使用内置函数 max()) def get_max(lst):xlst[0] # x存储的是元素的最大值# 遍历for i in range(1,len(lst)):if ls…

【springboot+mybatis实现CURD模版项目-Jesus】

springbootmybatis实现CURD模版项目-Jesus STEP 1 项目创建 1.1 新建Spring Initializr项目   1.2 选择需要的依赖 springboot有2.7.2直接选272STEP 2 配置更改 2.1更改maven配置   2.2 检查项目配置jdk、sdk、jre版本一致   2.3 检查pom文件&#xff0c;Maven-Reload pr…

Go语言中的乐观锁与悲观锁

改变一个数值的三个步骤 把想修改的数值从某个地方取出来将取出来的数值修改为期望值把修改后的数值保存到原来的地方 问题 如果在做第2步时&#xff0c;有另一个过程&#xff08;进程或线程&#xff09;对同一个数值进行同样的操作&#xff08;取值、修改&#xff09;&…

grep笔记240103

常用选项&#xff1a;&#xff1a; -i&#xff1a;忽略大小写进行匹配。 -v&#xff1a;反向匹配&#xff0c;只打印不匹配的行。 -n&#xff1a;显示匹配行的行号。 -r&#xff1a;递归查找子目录中的文件。 -l&#xff1a;只打印匹配的文件名。 -c&#xff1a;只打印匹配的行…

11-2 RHEL8配置YUM软件仓库及安装拼音输入法

配置本地YUM源 一、虚拟机关机>>虚拟机设置>>CD/DVD&#xff0c;关联ISO镜像文件&#xff0c;勾选“启动时连接”&#xff0c;点确定 二、开启虚拟机&#xff0c; 使用root用户登录。用df -h 命令可以看到光驱已经正常连接了。如果看不到/dev/sr0&#xff0c;需…

探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Unity 关于点击不同物品移动并触发不同事件

关于点击不同物品触发不同事件 可以实现在界面中点击不同的物体&#xff0c;移动到物品附近位置&#xff0c;然后触发对应的事件。 首先建立一个公共管理的类&#xff1a; public class InteractionObject : MonoBehaviour {private NavMeshAgent PlayerAgent;private bool …

铁塔基站数字化管理监测解决方案

截至2023年10月&#xff0c;我国5G基站总数达321.5万个&#xff0c;占全国通信基站总数的28.1%。然而&#xff0c;随着5G基站数量的快速增长&#xff0c;基站的能耗问题也逐渐日益凸显&#xff0c;基站的用电给运营商带来了巨大的电费开支压力&#xff0c;降低5G基站的能耗成为…

vue +WebSDK_V3.3.0/本地调试和打包成dist部署还有所不同!!

1.在index.html中引入js文件 <!-- 实时对讲 --><script src"./static/js/jquery-1.7.1.min.js"></script><script src"./static/js/jsVideoPlugin-1.0.0.min.js"></script><script id"videonode" src"./s…

Object-c初步学习 四

1.category的用法 不修改对象源文件的方式下&#xff0c;给类添加方法 为Student类添加方法 // // NSObjectStudyCategory.h // #import <Foundation/Foundation.h> #import "Student.h" #pragma mark 类名后面的&#xff08;test&#xff09;代表Category…

CCF录用率怎么看?如何挑选合适的会议

写在前面 写此文是因为有同学问我如何确定自己能投稿的会议。首先&#xff0c;不建议直接用他人汇总好的数据&#xff08;截稿时间和录用率&#xff09;&#xff0c;如果遇到更新不及时的很有可能耽误自己的工作。 平常&#xff0c;我都会自己收集预计投稿时间的会议信息&…

6张思维导图,js基础(基本概念,操作符,语句,Date,函数,数组,字符串)

一&#xff0c;js基本概念 二 &#xff0c;js操作符 三&#xff0c;js基本语句 四&#xff0c;Date 常基本用方法汇总 五&#xff0c;数组基本及常用方法汇总 六&#xff0c;字符串基本及常用方法汇总 满满的都是干货。 附送250套精选项目源码 源码截图 源码获取&#xff1a;…

Ansible、Saltstack、Puppet自动化运维工具介绍

本文主要是分享介绍三款主流批量操控工具Ansible、Saltstack、Puppet主要对比区别&#xff0c;以及Ansible和saltstack的基础安装和使用示例&#xff0c;如果觉得本文对你有帮助&#xff0c;欢迎点赞、收藏、评论&#xff01; There are many things that can not be broken&am…

【Java干货教程】Stream流详解

一、Stream流的简介 1.1、Stream流的概述 Stream是Java 8 API添加的一个新的抽象&#xff0c;称为流Stream&#xff0c;以一种声明性方式处理数据集合&#xff08;侧重对于源数据计算能力的封装&#xff0c;并且支持序列与并行两种操作方式。 Stream流是从支持数据处理操作的…

Java读取Oracle的Clob类型数据,由Clob转String

问题场景&#xff1a; 从Oracle读取出来的字段是Clob类型数据&#xff0c;因需要对其进行操作&#xff0c;则转成字符串类型 调用方法&#xff1a; Clob clobDDL (Clob) map.get("ClobDDL"); String str ClobToString(clobDDL); 转化方法&#xff1a; /*** clob…

机器学习中的监督学习基本算法-线性回归简单介绍

机器学习中的监督学习算法有很多&#xff0c;如下所示&#xff1a; 监督学习算法:线性回归、逻辑回归、K-近邻算法(KNN)、BP神经网络、朴素贝叶斯算法、随机森林、决策树、支持向量机。 本小节主要重点讲解线性回归 线性回归 线性回归是一种用于建立和预测变量之间线性关系的…

npm发布js工具包

一、创建项目 1、在github上创建一个项目&#xff0c;然后拉取至本地&#xff0c;进入项目目录2、执行 npm init 生成json文件3、创建 src/index.ts 入口文件和 src/isObject.ts 工具方法 src/index.ts export { default as isObject } from ./isObject src/isObject.ts /…