代码随想录算法训练营day2 | 977. 有序数组的平方,209. 长度最小的子数组

目录

977. 有序数组的平方

209. 长度最小的子数组

59. 螺旋矩阵 II


977. 有序数组的平方

977. 有序数组的平方

难度:easy

类型:双指针(相向指针)

 思路:

        暴力法是将每个数都平方后,再排序(快排),时间复杂度为O(logn)。我们采用双指针(相向指针,区别下一题的快慢指针)的方法,因为最大的平方数一定出现在数组首或尾,所以我们依次比较首位平方元素,从大到小来构建答案数组。

代码:

class Solution {public int[] sortedSquares(int[] nums) {int len = nums.length;int[] result = new int[len];int left = 0;int right = len - 1;for (int i = len - 1; i >= 0; i--) {if (nums[left] * nums[left] > nums[right] * nums[right]) {result[i] = nums[left] * nums[left];left++;} else {result[i] = nums[right] * nums[right];right--;}}return result;}
}

复杂度分析:

  • 时间复杂度:O(n)

209. 长度最小的子数组

209. 长度最小的子数组

难度:easy

类型:双指针(快慢指针)

思路:

        这道题也可以通过暴力法解决,用两个for循环遍历所有情况,时间复杂度为O(n^2)。我们通过双指针来实现滑动窗口来解决这道题。窗口内的和为sum,right指针向右移动,当sum大于等于target时,判断是否为最小长度;然后左指针向左移直到sum小于target。

细节:

ans取Integer.MAX_VALUE,有助于动态更新最小长度;

ans = Integer.MAX_VALUE

代码:

class Solution {public int minSubArrayLen(int target, int[] nums) {int len = nums.length;int left = 0;int right = 0;int sum = 0;int ans = Integer.MAX_VALUE;while (right < len) {sum += nums[right++];while (sum >= target) {ans = Math.min(ans, right - left);sum -= nums[left++];}}return ans == Integer.MAX_VALUE? 0: ans;}
}

复杂度分析:

  • 时间复杂度:
  • 空间复杂度:

59. 螺旋矩阵 II

59. 螺旋矩阵 II

思路:

        设置四个边界,动态更新边界,这样可以避免设置左闭右开区间,没那么麻烦。

代码:

class Solution {public int[][] generateMatrix(int n) {int[][] ans = new int[n][n];int left = 0;int right = n - 1;int up = 0;int down = n - 1;for (int element = 1; element <= n * n;) {for (int i = left; i <= right; i++) {ans[up][i] = element++;}up++;for (int i = up; i <= down; i++) {ans[i][right] = element++;}right--;for (int i = right; i >= left; i--) {ans[down][i] = element++;}down--;for (int i = down; i >= up; i--) {ans[i][left] = element++;}left++;}return ans;}
}

复杂度分析:

  • 时间复杂度:O(n),因为每个元素遍历了一遍

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

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

相关文章

问题解决:idea克隆项目依赖无法解析

问题描述尝试解决方案 问题描述 从git远程仓库clone了一个springboot项目, 然后项目的pom.xml文件的依赖全部加载失败,全部是Project 某某某依赖 not found 的错误,几十条 代码就更不用看了,只要用到依赖,全部报错. 看着报错就头大 尝试解决方案 检查maven配置是否正确 检查是…

Tomcat 应用服务 WEB服务

简述&#xff1a; 中间件产品介绍 目前来说IBM的WebSphere&#xff0c;Oracle的Weblogic占据了市场上Java语言Web站点的部分份额&#xff0c;该两种软件由于无与伦比的性能及可靠性等优势被广泛应用于大型互联网公司的Web场景中&#xff0c;但是其高昂的价格也使得中小型互联…

跨端技术栈综合考察:深入剖析 UniApp、Flutter、Taro 和 React Native 的优势与限制

文章目录 &#x1f4c8;UniApp⚡概念⚡优势⚡限制 &#x1f4c8;Flutter⚡概念⚡优势⚡限制 &#x1f4c8;Taro⚡概念⚡优势⚡限制 &#x1f4c8;React Native⚡概念⚡优势⚡限制 &#x1f4c8;跨端技术栈对比附录&#xff1a;「简历必备」前后端实战项目&#xff08;推荐&…

mysql常用字符串函数

1. 计算字符串字符数 CHAR_LENGTH(str)&#xff1a;返回字符总数 2. 计算字符串长度 LENGTH()&#xff1a;使用​​utf8​​编码字符集时&#xff0c;一个汉字是三字节&#xff0c;一个数字或者字母算一字节&#xff1b; 3. 合并字符串函数 CONCAT(s1,s2,...)&#xff1a;合…

Linux->初识计算机网络

目录 前言&#xff1a; 1 网络发展背景 2 协议 2.1 网络协议初识 2.2 协议分层 2.3 OSI、TCP/IP层状模型 2.4 协议和操作系统的关系 2.5 根据协议栈的通信 3 网络中的地址管理 前言&#xff1a; 本篇当中没有任何关于网络编程的讲解&#xff0c;全部是对网络的宏观理解…

MySQL的数据备份与还原--练习题

MySQLdump MySQLdump是MySQL提供的一个非常有用的数据库备份工具。MySQLdump命令执行时&#xff0c;可以将数据库备份成一个文本文件&#xff0c;该文件中实际上包含了多个CREATE 和 INSERT语句&#xff0c;使用这些语句可以重新创建表和插入数据。 看题&#xff1a; 第一题&a…

SPEC CPU 2006 在 CentOS 5.0 x86_64 古老系统测试【4】-O3 不支持 编译失败

gcc -O3 编译失败 结论&#xff1a;默认情况下SPEC CPU 2006 1.2 不支持 gcc -O3编译参数。

IDEA中右侧栏和底部栏不见了

IDEA中右侧栏和底部栏不见了 在开发中&#xff0c;IDEA的右侧栏目maven、database等栏目不见了 右侧栏中和底部没东西。 问题解决&#xff1a; View—>Appearance–>Tool Windows Bars 选中即可。 选中之后&#xff0c;出现

Ubuntu18.04 系统安装 Docker

1、首先更新软件源&#xff1a; sudo apt-get updatesudo apt-get upgrade 2、安装Docker&#xff1a; sudo apt install docker -y 3、查看安装的Docker apt list docker 4、查看docker 进程 ps -ef|grep docker 5、查看docker 版本有问题 6、开启Docker服务 systemctl…

【C语言】字符串函数

文章目录 一、求字符串长度strlen例子模拟实现 二、长度不受限制的字符串函数strcpy例子模拟实现 strcat例子模拟实现 strcmp例子模拟实现 三、长度受限制的字符串函数strncpy例子 strncat例子 strncmp例子 四、字符串查找strstr例子模拟实现 strtok例子 五、错误信息报告strer…

KMP算法

KMP KMP 算法是一个快速查找匹配串的算法&#xff0c;它的作用其实就是本题问题&#xff1a;如何快速在「原字符串」中找到「匹配字符串」。 而 KMP 算法的复杂度为 O(mn)实际上是O(N),因为O(M)不可能大于O(N) KMP 之所以能够在 O(mn)复杂度内完成查找&#xff0c;是因为其能…

selenium WebDriver 中的几种等待--sleep(),implicitly_wait(),WebDriverWait()

目录 强制等待:sleep() 隐式等待:implicitly_wait() 显示等待:WebDriverWait() 与until()或者until_not()方法结合使用 WebDriverWait与expected_conditions结合使用 显示等待,自定义等待条件 强制等待:sleep() import time sleep(5) #等待5秒 设置固定休眠时间&#x…