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

顺庆移动网站建设中国发达国家投票

顺庆移动网站建设,中国发达国家投票,搭建网页步骤,装修全包报价明细表2021代码随想录——数组篇 2. 二分查找3. 移除元素4. 有序数组的平方5. 长度最小的子数组6. 螺旋矩阵II 2. 二分查找 力扣题目链接 前提: 有序数组数组中无重复元素 代码: (版本一)左闭右闭区间 class Solution {public int sea…

代码随想录——数组篇

  • 2. 二分查找
  • 3. 移除元素
  • 4. 有序数组的平方
  • 5. 长度最小的子数组
  • 6. 螺旋矩阵II

2. 二分查找

力扣题目链接

前提:

  1. 有序数组
  2. 数组中无重复元素

代码:

(版本一)左闭右闭区间

class Solution {public int search(int[] nums, int target) {//当 target 小于nums的最小值 或 大于nums的最大值时,直接返回-1if(target < nums[0] || target > nums[nums.length - 1])return -1;int left = 0, right = nums.length - 1, mid;while(left <= right) {mid = left + ((right- left) >> 1);if(nums[mid] == target)return mid;else if(nums[mid] > target)right = mid - 1;elseleft = mid + 1;}return -1;}
}
  • 时间复杂度:O(log n)
  • 空间复杂度:O(1)

(版本二)左闭右开区间

class Solution {public int search(int[] nums, int target) {//当 target 小于nums的最小值 或 大于nums的最大值时,直接返回-1if(target < nums[0] || target > nums[nums.length - 2])return -1;int left = 0, right = nums.length - 1, mid;while(left < right) {mid = left + ((right- left) >> 1);if(nums[mid] == target)return mid;else if(nums[mid] > target)right = mid;elseleft = mid + 1;}return -1;}
}
  • 时间复杂度:O(log n)
  • 空间复杂度:O(1)

3. 移除元素

力扣题目链接

代码:

双指针法(快慢指针法)

class Solution {public int removeElement(int[] nums, int val) {int j = 0;for(int i = 0; i < nums.length; i++) {if(nums[i] != val) {nums[j++] = nums[i];}} return j;}
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

4. 有序数组的平方

力扣题目链接

前提:

  1. 非递减顺序 排序的整数数组

思路:
数组本身有序,平方和较大的值一定出现在两端,可以借用前面学习的双指针法。

代码:

class Solution {public int[] sortedSquares(int[] nums) {int[] result = new int[nums.length];int left = 0, right = nums.length - 1, index = nums.length - 1;while(left <= right) {if(nums[left] * nums[left] < nums[right] * nums[right]) {//大的值从后往前放result[index--] = nums[right] * nums[right];right -= 1;}else {result[index--] = nums[left] * nums[left];left += 1;}}return result;}
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

5. 长度最小的子数组

力扣题目链接

滑动窗口:
不断调节子序列的起始位置和终止位置,从而得出想要的结果。

滑动窗口三要素:

  1. 窗口内是什么?
    • 满足其和 ≥ target 的长度最小的 连续 子数组。
  2. 如何移动窗口的起始位置
    • 如果当前窗口的值 ≥ target 了,窗口就要向前移动了(窗口该缩小了)。
  3. 如何移动窗口的结束位置
    • 窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。

代码:

class Solution {public int minSubArrayLen(int target, int[] nums) {int left = 0, sum = 0, result = Integer.MAX_VALUE;for (int right = 0; right < nums.length; right++) {sum += nums[right];//如果滑动窗口内的总和大于或等于targetwhile(sum >= target) {//更新最小子序列长度result = Math.min(result, right - left + 1);//移动滑动窗口的起始位置,缩小窗口sum -= nums[left++];}}return result == Integer.MAX_VALUE ? 0 : result;}
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

6. 螺旋矩阵II

力扣题目链接

代码:

class Solution {public static int[][] generateMatrix(int n) {//定义起始x, y, 偏移量offsetint startX = 0, startY = 0, offset = 1;//定义移动指针i, j, 圈数loop, 数字numint i, j, loop = n >> 1, num = 1;//定义n * n的矩阵int[][] arr = new int[n][n];//模拟循环while((loop--) > 0) {//从左到右(左闭右开)for (j = startY; j < n - offset; j++) {arr[startX][j] = num++;}//从上到下(左闭右开)for (i = startX; i < n - offset; i++) {arr[i][j] = num++;}//从右到左(左闭右开)for ( ; j > startY; j--) {arr[i][j] = num++;}//从下到上(左闭右开)for ( ; i > startX; i--) {arr[i][j] = num++;}//一圈结束,起始位置+1,如(0, 0) 变为(1, 1)startX++;startY++;//offset同步更新offset++;}//如果n为奇数,中间的数单独赋值if(n % 2 == 1)arr[startX][startY] = num;return arr;}
}
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(1)
http://www.yayakq.cn/news/712977/

相关文章:

  • 宝塔做两个网站6网站目录设计
  • 现在为什么网站都打不开了怎么办啊备案期间网站
  • 张掖网站制作wordpress插件启用
  • 免费的做网站品牌整合营销机构
  • 网站设计是什么网站建设技术百科
  • 如何备份网站 整站房产中介网站建设技巧
  • 西安网站建设公司排名wordpress媒体保存目录
  • 怎么上传网站模板全球设计网站有哪些
  • 秀洲区住房和城乡建设局网站wordpress 编辑权限设置
  • 运营一个网站的费用wordpress引用js插件
  • 公司网站首页布局图网站管理与维护
  • 建设网站所需资料怎么给网站做logo
  • 沈阳网站制作费用做app网站的公司
  • 响应式网站如何做的校园论坛网站怎么做
  • 专业开发网站报价单网站建设支出账务处理
  • 有后台的网站如何建设天津怎样做网站推广
  • 开源网站搭建微信营销策略有哪些
  • 手机app网站建设做外贸需要网站
  • 做网站设计的公司柳州我谁知道在哪里可以找人帮忙做网站
  • wordpress网站收录插件上海最近的新闻大事10条
  • 旅游网站开发项目策划书个人网站备案通过后
  • 做印刷哪个网站好哈尔滨网站建设维护
  • 韩国设计网站推荐网站建设评比标准
  • 济南企业制作网站加强网站信息内容建设
  • 如何找回网站备案密码建设网站的各种问题
  • 免费版在线crm宁波网络推广优化方案
  • 深圳华强北有什么好玩的世纪兴seo公司
  • 长沙申请域名网站备案西安十大网络公司排名
  • wordpress域名重复青岛seo博客
  • 设计网站制网站开发推进计划表