当前位置: 首页 > wzjs >正文

旅游便宜网站建设信息流优化师证书

旅游便宜网站建设,信息流优化师证书,赣州人才网招聘网,广告字体效果图在线制作搜索插入位置、零矩阵、旋转矩阵 每日一练:LeeCode-35、搜索插入位置【数组】方法一(自己写的)方法二二分法 每日一练:面试题 01.08. 零矩阵【数组】每日一练:面试题 01.07. 旋转矩阵【数组行列翻转】 每日一练&#x…

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

    • 每日一练: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.dtcms.com/wzjs/17605.html

相关文章:

  • 建设投注网站百度seo插件
  • 做网站页面一般设置多大尺寸网络推广网站
  • 做一个网站需要什么上海seo推广公司
  • 学校网站建设市场seo店铺描述
  • 苏州市吴江太湖新城建设局网站舆情监测分析系统
  • 企业门户网站免费模板网站制作多少钱一个
  • 网络 企业网站网络推广外包怎么接单
  • 武钢建工集团建设分公司网站营销活动方案
  • 广州网站设计公司兴田德润在那里广告联盟平台挂机赚钱
  • 学校网页制作模板衡水seo排名
  • 柯桥做网站哪家好站长之家关键词挖掘工具
  • 国外对旅游网站建设的现状北京seo外包
  • 做医学期刊杂志网站深圳网站优化网站
  • 动易网站开发宁波seo网站排名
  • 河南专业网站建设公司推荐宁波seo优化服务
  • 网站建设心得体会及总结四年级小新闻50字左右
  • 外贸型网站建设公司营销推广是什么意思
  • 合浦建设局网站网络销售新手入门
  • 富阳房产网安徽百度seo教程
  • 健身器材 网站模版全网营销推广公司
  • 怎么做展示型网站品牌营销做得好的品牌有哪些
  • 个人申请网站网络推广是什么职位
  • 在线设计外卖平台店招seo优化基础教程pdf
  • 做网站还是微信小程序百度登录首页
  • 广东湛江怎么做网站教程泰州网站建设优化
  • html基础标签seo学途论坛网
  • 商会网站制作网站流量查询工具
  • 中方建设局网站南通seo网站优化软件
  • 建设vip视频解析网站违法吗写软文的app
  • 宜春公司做网站宁波网站建设公司