每日一练:LeeCode-35、搜索插入位置【数组】、面试题 01.08. 零矩阵【数组】、面试题 01.07. 旋转矩阵【数组+行列翻转】

搜索插入位置、零矩阵、旋转矩阵

    • 每日一练:LeeCode-35、搜索插入位置【数组】
      • 方法一(自己写的)
      • 方法二
      • 二分法
    • 每日一练:面试题 01.08. 零矩阵【数组】
    • 每日一练:面试题 01.07. 旋转矩阵【数组+行列翻转】

每日一练:LeeCode-35、搜索插入位置【数组】

LeeCode-35、搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将 会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法

示例 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 <= 10^4
  • -10^4 <= nums[i] <= 10^4
  • nums无重复元素升序 排列数组
  • -10^4 <= target <= 10^4

方法一(自己写的)

class Solution {
public int searchInsert(int[] nums, int target) {int m=0;    //记录是否有相等元素的情况//先遍历一遍数组,判断是否有相等的元素,有则返回索引for(int i=0;i<nums.length;i++){if(nums[i]==target){m=i;return m;}}if(m==0){//target小于nums数组中除最后一个元素之外的元素for(int j=0;j<nums.length;j++){if(nums[j]>target){m=j;//不能解决大于nums[nums.length-1]的情况return m;}}//target大于所有数组元素if(target>nums[nums.length-1]){m=nums.length;return m;}}
return m;
}
}

方法二

class Solution {public int searchInsert(int[] nums, int target) {for(int i=0;i<nums.length;i++){if(nums[i]>=target){return i;}//大于的情况,原本nums[i]的值往后移,所以返回的就是新元素插入的位置}return nums.length;//target大于任何数,所以新加一个位置,放在最后}
}

二分法

class Solution {public int searchInsert(int[] nums, int target) {// 二分法int left = 0, right = nums.length - 1;while(left <= right){// 防止 left+right 整型溢出int mid = left + (right - left) / 2;if(nums[mid] == target){return mid;}else if(nums[mid] < target){left = mid + 1;}else if(nums[mid] > target){right = mid - 1;}}return left;//如果target找不到,left会一直计算到最接近nums[i]其中一个值附近且找到大于它的下一个位置,所以此时就可以把left作为位置返回了}
}

每日一练:面试题 01.08. 零矩阵【数组】

面试题 01.08. 零矩阵

编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。

思路:
1.获取原数组的行列数
2.新建新数组来保存原数组
3.遍历找到原数组中元素为0的地方,在新数组中,将对应元素的行列设置为0
4.将新数组替换原数组

class Solution {public void setZeroes(int[][] matrix) {//1.获取原数组的行列数int rowRecord =matrix.length;int colRecord = matrix[0].length;int maxId1 = rowRecord-1;int maxId2 =colRecord-1;int [][] newMatrix = new int [rowRecord][colRecord];   //新数组作为临时空间//2.新建新数组来保存原数组for(int x=0;x<rowRecord;x++){for(int y=0;y<colRecord;y++){newMatrix[x][y] = matrix[x][y];}}//3.遍历找到原数组中元素为0的地方,在新数组中,将对应元素的行列设置为0for(int x=0;x<rowRecord;x++){for(int y=0;y<colRecord;y++){if(matrix[x][y]==0){for(int i=0;i<rowRecord;i++){newMatrix[maxId1-i][y]=0;  }for(int j=0;j<colRecord;j++){newMatrix[x][maxId2-j]=0;  }              }}}//4.将新数组替换原数组for(int x=0;x<rowRecord;x++){for(int y=0;y<colRecord;y++){matrix[x][y] = newMatrix[x][y];}} }
}

每日一练:面试题 01.07. 旋转矩阵【数组+行列翻转】

给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?

面试题 01.07. 旋转矩阵

class Solution {public void rotate(int[][] matrix) {//获取原数组的行数int len = matrix.length;if(len==1){return ;}//新建NXN矩阵,存放原数组的元素int [][] newMatrix = new int[len][len];int maxId = len-1;for(int x=0;x<len;x++){for(int y=0;y<len;y++){newMatrix[x][maxId-y] = matrix[y][x];//自己画个矩阵比划一下}}//旋转排序好的新数组替换原数组for(int i=0;i<len;i++){for(int j=0;j<len;j++){matrix[i][j] = newMatrix[i][j];}}}
}

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

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

相关文章

课时60:流程控制_if条件控制_if 案例实践

2.2.2 if 案例实践 学习目标 这一节&#xff0c;我们从 服务管理、堡垒机登录、小结 三个方面来学习。 服务管理 案例需求 要求脚本执行需要有参数&#xff0c;通过传入参数来实现不同的功能。参数和功能详情如下&#xff1a;参数 执行效果start 服务启动中...sto…

iperf流量分析

iperf3打流软件 本身不支持多线程打流&#xff0c;所以本身服务器软中断占用较高&#xff0c;无法突破打流瓶颈&#xff0c;而iperf2版本没有该问题&#xff0c;所以可以使用iperf2来进行打流&#xff0c;来呈现真实网络带宽。iperf3需要使用-P多线程 tcp传输带宽&#xff1a;…

【个人开发】llama2部署实践(三)——python部署llama服务(基于GPU加速)

1.python环境准备 注&#xff1a;llama-cpp-python安装一定要带上前面的参数安装&#xff0c;如果仅用pip install装&#xff0c;启动服务时并没将模型加载到GPU里面。 # CMAKE_ARGS"-DLLAMA_METALon" FORCE_CMAKE1 pip install llama-cpp-python CMAKE_ARGS"…

探寻程序员职业之迷:选择你的职业赛道

作为一名程序员&#xff0c;你站在职业发展的十字路口&#xff0c;眼前是一个庞大而复杂的迷宫&#xff0c;每条通道都通往不同的职业赛道。前端如花园般绚丽&#xff0c;后端似黑暗洞穴&#xff0c;数据科学则隐藏着神秘的密室。在这充满挑战和机遇的迷宫中&#xff0c;你准备…

解决eclipse上启动不了tomcat问题

一、问题&#xff1a;在eclipse上启动不了tomcat 网上搜的方法基本都不行&#xff0c;改Maven配置和重建项目等等都解决不了。问题如下 严重: 子容器启动失败 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component …

【实验报告】C语言实现猜单词的小游戏

之前帮别人写的一个简单的报告&#xff0c;无偿分享给大家~代码在后面&#xff0c;有一些图片出于懒惰没有上传。比较简单&#xff0c;喜欢的话关注我~&#xff0c;请勿商用~ 1 系统功能模块结构图 该程序主要思路&#xff1a; 头文件设计&#xff0c;存储结构设计&#xff0…

Ubuntu启用ROOT用户和配置SSH远程

文章目录 Ubuntu启用ROOT用户和配置SSH远程一、前言1.简介2.环境 二、正文1.首次启用ROOT用户2.配置ROOT的SSH远程 Ubuntu启用ROOT用户和配置SSH远程 一、前言 1.简介 在Ubuntu系统中&#xff0c;默认情况下&#xff0c;root用户&#xff08;也就是超级用户或管理员用户&…

Biomedical knowledge graph-enhanced prompt generation for large language models

1. 生物医学知识图谱增强大语言模型提示生成 论文地址&#xff1a;[2311.17330] Biomedical knowledge graph-enhanced prompt generation for large language models (arxiv.org) 源码地址&#xff1a;https://github.com/BaranziniLab/KG_RAG 2. 摘要 大语言模型&#xff0…

IOS面试题object-c 71-80

71. 简单介绍下NSURLConnection类及 + sendSynchronousRequest:returningResponse:error:与– initWithRequest:delegate:两个方法的区别?NSURLConnection 主要用于网络访问,其中 + sendSynchronousRequest:returningResponse:error:是同步访问数据,即当前线程会阻塞,并等待…

UE4开个头-简易小汽车

跟着谌嘉诚学的小Demo&#xff0c;记录一下 主要涉及到小白人上下车和镜头切换操作 1、动态演示效果 2、静态展示图片 3、蓝图-上下车

机器人大赛有什么用?

机器人大赛在多个方面都具有显著的价值。首先&#xff0c;机器人大赛可以为学生提供一个实践与创新的机会&#xff0c;有助于培养学生的动手实践能力和创新思维。在比赛过程中&#xff0c;学生需要运用所学的知识和技能&#xff0c;设计、制作和调试机器人&#xff0c;这不仅可…

云原生技术实践:Kubernetes集群的部署与运维

随着云原生技术的兴起&#xff0c;Kubernetes作为容器编排领域的领导者&#xff0c;受到了越来越多开发者和运维人员的关注。本文将深入探讨Kubernetes集群的部署与运维实践&#xff0c;旨在为中高级技术人员提供有价值的参考和帮助。 一、引言 云原生技术作为现代软件开发的…

基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的无人机三维路径规划(MATLAB)

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化飞行…

在 .NET 项目中复制资源文件夹到生成目录

本文主要介绍在使用 Visual Studio 进行调试和发布时&#xff0c;如何在 .NET 项目中复制资源文件夹到生成目录。 1. 背景 在开发 .NET 项目的过程中&#xff0c;我们有时会遇到需要在 debug 、 release 或是发布时将资源文件夹复制到生成目录的需求。这些资源可能包括图片、配…

突破编程_C++_设计模式(观察者模式)

1 观察者模式的概念 观察者模式&#xff08;Observer Pattern&#xff09;是设计模式中的一种行为模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。当主题对象状态发生变化时&#xff0c;它的所有依赖者&#xff08;观察者…

Git分支管理(IDEA)

文章目录 Git分支管理&#xff08;IDEA&#xff09;1.Git分支管理&#xff08;IDEA&#xff09;1.基本介绍1.分支理解2.示意图 2.搭建分支和合并的环境1.创建Gitee仓库2.创建普通maven项目3.克隆Gitee项目到E:\GiteeRepository4.复制erp文件夹下的内容到IDEA项目下5.IDEA项目中…

基于微信小程序的校园跑腿小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Django 模版基本语法

Django学习笔记 模版语法 本质&#xff1a;在HTML中写一些占位符&#xff0c;由数据对这些占位符进行替换和处理。 views.py def page2(request):#定义一些变量将变量传送给templates中的html文件name1 sallyname2 yingyinghobbys [swimming,badminton,reading]person {…

03-安装配置jenkins

一、安装部署jenkins 1&#xff0c;上传软件包 为了方便学习&#xff0c;本次给大家准备了百度云盘的安装包 链接&#xff1a;https://pan.baidu.com/s/1_MKFVBdbdFaCsOTpU27f7g?pwdq3lx 提取码&#xff1a;q3lx [rootjenkins ~]# rz -E [rootjenkins ~]# yum -y localinst…

音频分类革命:如何用Hugging Face实现前沿的音频频谱图变换器

目录 引言 ASTConfig 参数解释 示例代码及注释 ASTFeatureExtractor 参数解释 call 方法参数 ASTModel 参数 forward 方法参数 返回值 返回的主要元素 示例代码及说明 ASTForAudioClassification 参数 forward 方法参数 返回值 主要返回元素