首页 > 编程语言 >代码随想录算法训练营第十三天 | 59.螺旋矩阵II 209.长度最小的子数组 977.有序数组的平方

代码随想录算法训练营第十三天 | 59.螺旋矩阵II 209.长度最小的子数组 977.有序数组的平方

时间:2024-02-06 12:44:07浏览次数:23  
标签:right nums int res 随想录 数组 第十三天 left

977. 有序数组的平方

  已解答 简单  

相关标签

相关企业  

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

 

示例 1:

输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]

示例 2:

输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]

 

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 已按 非递减顺序 排序

 

进阶:

  • 请你设计时间复杂度为 O(n) 的算法解决本问题

 

func sortedSquares(nums []int) []int { //双指针 varres []int res = make([]int, len(nums)) revSlow := len(nums) - 1 left, right := 0, len(nums)-1 for left <= right { ifabs(nums[left]) > abs(nums[right]) { res[revSlow] = nums[left] * nums[left] left++ } else { res[revSlow] = nums[right] * nums[right] right-- } revSlow-- } return res }

 

func abs(numA int) int { if numA < 0 { return0 - numA } return numA

 

}

209. 长度最小的子数组

  已解答 中等  

相关标签

相关企业  

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

 

示例 1:

输入:输出:解释:
[4,3]

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

 

提示:

  • 1 <= target <= 109
  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 105

 

进阶:

  • 如果你已经实现 O(n) 时间复杂度的解法, 请尝试设计一个 O(n log(n)) 时间复杂度的解法

 


func minSubArrayLenOne(target int, nums []int) int { var left, areaSum, minArea int minArea = math.MaxInt32 for right := 0; right < len(nums); right++ { areaSum = nums[right] + areaSum for areaSum >= target { minArea = min(minArea, right-left+1) areaSum -= nums[left] left++ } } if math.MaxInt32 == minArea { return 0 } return minArea }

 

func min(numA, numB int) int { if numA > numB { return numB } return numA }

59. 螺旋矩阵 II

  已解答 中等  

相关标签

相关企业  

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

 

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

 

提示:

  • 1 <= n <= 20

func generateMatrix(n int) [][]int { varres [][]int res = make([][]int, n) fori := 0; i < n; i++ { res[i] = make([]int, n) } left, right, top, bottom := 0, n-1, 0, n-1 varindexint for left <= right { if left == right { index++ res[top][left] = index break } fori := left; i <= right; i++ { index++ res[top][i] = index } top++ fori := top; i <= bottom; i++ { index++ res[i][right] = index } right-- fori := right; i >= left; i-- { index++ res[bottom][i] = index } bottom-- fori := bottom; i >= top; i-- { index++ res[i][left] = index } left++ } return res }

标签:right,nums,int,res,随想录,数组,第十三天,left
From: https://www.cnblogs.com/suxinmian/p/18009534

相关文章

  • JS数组添加元素的三种方式
    JS数组添加元素的三种方式1、push()结尾添加数组.push(元素)参数描述newelement1必需。要添加到数组的第一个元素。newelement2可选。要添加到数组的第二个元素。newelementX可选。可添加多个元素。2、unshift()头部添加数组.unshift(元素)参数描述newelement1必......
  • shell数组-1
       近期在目录遍历时突然想到了shell中数组的概念于是乎就把需要遍历的目录结构存放到数组中,然后再取数组中值--也就是目录,做统计目录大小或文件数量使用。在该项目中目录结构非常清晰,具体目录为/年份/月份/日期/小时/相应固定的目录,比如/2019/01/31/23/xunjian/*.jpg数组定义......
  • 代码随想录算法训练营第十三天|239. 滑动窗口最大值 347.前 K 个高频元素 总结
    239.滑动窗口最大值题目链接:239.滑动窗口最大值-力扣(LeetCode)给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。思路:首先在不考虑......
  • 树状数组
    【树状数组是什么】树状数组(BinaryIndexedTree,BIT)支持单个元素修改和前缀查询。比较一下:子段和修改单个元素数组\(O(n)\)\(O(1)\)前缀和\(O(1)\)\(O(n)\)树状数组\(O(\logn)\)\(O(\logn)\)【树状数组的实现】比如\(a\)数组有16个元素......
  • 代码随想录 day41 整数拆分 不同的二叉搜索树
    整数拆分这里的递推式子很不好想一般的想法是dp[i]=max(dp[i],dp[i-j])但是这个式子需要赋值dp[1]=1dp[2]=2dp[3]=3这个不符合dp[i]定义这里递推式子如下dp[i-j]等于拆分成两个或两个以上的数字i*(i-j)就是两个数字拆分不同的二叉搜索树难点依旧是递推式是怎么......
  • 34 数组操作符的重载
    数组访问的一些思考string类最大限度地考虑了C字符串的兼容性。可以按照使用C字符串的方式适应string对象。#include<iostream>#include"add.h"usingnamespacestd;intmain(void){strings="safbd1334";intn=0;for(inti=0;i<s.length()......
  • 数据结构之——数组
    数组数据结构的基本类型之一,它可以构成其他数据结构,如栈、队列、哈希表、树、图、堆、矩阵、张量。数组在内存中的存储方式为一片连续的内存空间,其基本操作与其他数据结构一致,即所谓的增删改查。废话不多说,上代码加以理解。Java类型实现classarray{publicstaticvoid......
  • 乘积小于k的子数组
    问题描述:给定一个正整数数组nums。找出该数组内乘积小于k的连续的子数组的个数。示例1:输入:nums=[10,5,2,6],k=100输出:8解释:8个乘积小于100的子数组分别为:[10],[5],[2],[6],[10,5],[5,2],[2,6],[5,2,6]。需要注意的是[10,5,2]并不是乘积小于100的......
  • 长度最小的子数组
    问题描述:给定一个含有n个正整数的数组和一个正整数s,找出该数组中满足其和≥s的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回0。示例:输入:s=7,nums=[2,3,1,2,4,3]输出:2解释:子数组[4,3]是该条件下的长度最小的连续子数组。进阶:如果你......
  • 代码随想录算法训练营第一天 | 27. 移除元素 | 704. 二分查找
     704.二分查找 已解答简单 相关标签相关企业 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入:numstarget输出:解释:nums......