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

电影资源网站开发网站建设app

电影资源网站开发,网站建设app,永康企业网站建设公司,北京网站设计网站设计公司价格目录 二分查找1. 前提条件#xff1a;2. 二分查找边界 2.移除元素有序数组的平方长度最小的子数组59.螺旋矩阵II54. 螺旋矩阵 二分查找 参考链接 https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html#%E6%80%9D%E8%B7%AF 1. 前提条件#xff1a; 数… 目录 二分查找1. 前提条件2. 二分查找边界 2.移除元素有序数组的平方长度最小的子数组59.螺旋矩阵II54. 螺旋矩阵 二分查找 参考链接 https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html#%E6%80%9D%E8%B7%AF 1. 前提条件 数组为有序数组无重复元素因为一旦有重复元素使用二分查找法返回的元素下标可能不是唯一的。 2. 二分查找边界 [left, right]区间while (left right) 要使用 因为left right是有意义的所以使用 if (nums[middle] target) right 要赋值为 middle - 1因为当前这个nums[middle]一定不是target那么接下来要查找的左区间结束下标位置就是 middle - 1 func search(nums []int, target int) int {high : len(nums)-1low : 0for low high {mid : low (high-low)/2if nums[mid] target {return mid} else if nums[mid] target {high mid-1} else {low mid1}}return -1 }区间[left, right)while (left right)这里使用 ,因为left right在是没有意义的 if (nums[middle] target) right 更新为 middle因为当前nums[middle]不等于target去左区间继续寻找而寻找区间是左闭右开区间所以right更新为middle即下一个查询区间不会去比较nums[middle] func search(nums []int, target int) int {high : len(nums)low : 0for low high {mid : low (high-low)/2if nums[mid] target {return mid} else if nums[mid] target {high mid} else {low mid1}}return -1 }2.移除元素 参考链接 https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 数组的元素在内存地址中是连续的不能单独删除数组中的某个元素只能覆盖。 所以不可以删除只能将等于val的值移到后面最后的结果返回数组满足条件的前半部分即可 func removeElement(nums []int, val int) int {left, right : 0, len(nums)-1for left right {if nums[left] val {nums[left] nums[right]right--} else {left}}return left } 顺便从二分法学以致用【关于 left right 和 left right 的选择问题】 func removeElement(nums []int, val int) int {left, right : 0, len(nums)for left right {if nums[left] val {nums[left] nums[right-1]right--} else {left}}return left }有序数组的平方 参考链接 https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC 双指针法 数组其实是有序的 只不过负数平方之后可能成为最大数了。 那么数组平方的最大值就在数组的两端不是最左边就是最右边不可能是中间。 此时可以考虑双指针法了i指向起始位置j指向终止位置。 定义一个新数组result和A数组一样的大小让k指向result数组终止位置。 如果A[i] * A[i] A[j] * A[j] 那么result[k–] A[j] * A[j]; 。 如果A[i] * A[i] A[j] * A[j] 那么result[k–] A[i] * A[i]; 。 func sortedSquares(nums []int) []int {n : len(nums)i, j, k : 0, n-1, n-1ans : make([]int, n)for i j {lm, rm : nums[i]*nums[i], nums[j]*nums[j]if lm rm {ans[k] lmi} else {ans[k] rmj--}k--}return ans }长度最小的子数组 参考链接 https://programmercarl.com/0209.%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 给定一个含有 n 个正整数的数组和一个正整数 s 找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组并返回其长度。如果不存在符合条件的子数组返回 0。 示例 输入s 7, nums [2,3,1,2,4,3] 输出2 解释子数组 [4,3] 是该条件下的长度最小的子数组。 滑动窗口 func minSubArrayLen(target int, nums []int) int {if len(nums) 0 {return 0}slow, fast : 0, 0sum : nums[0]minLen : len(nums) 1for fast len(nums) {if sum target {minLen min(minLen, fast-slow1)//还要记住改变sum的值否则就会带着sum7这个结果一直循环sum sum - nums[slow]slow} else if sum target {fastif fast len(nums) {sum sum nums[fast]}} }if minLen len(nums)1 {return 0}return minLen }59.螺旋矩阵II 给定一个正整数 n生成一个包含 1 到 n^2 所有元素且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 参考链接 https://programmercarl.com/0059.%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5II.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 每画一条边都要坚持一致的左闭右开或者左开右闭的原则这样这一圈才能按照统一的规则画下来 //左开右闭 func generateMatrix(n int) [][]int {top, bottom : 0, n-1left, right : 0, n-1num : 1tar : n * nmatrix : make([][]int, n)for i : 0; i n; i {matrix[i] make([]int, n)}for num tar {for i : left; i right; i {matrix[top][i] numnum}topfor i : top; i bottom; i {matrix[i][right] numnum}right--for i : right; i left; i-- {matrix[bottom][i] numnum}bottom--for i : bottom; i top; i-- {matrix[i][left] numnum}left}return matrix } 54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix 请按照 顺时针螺旋顺序 返回矩阵中的所有元素。 输入matrix [[1,2,3],[4,5,6],[7,8,9]] 输出[1,2,3,6,9,8,7,4,5] func spiralOrder(matrix [][]int) []int {result : []int{}//矩阵先考虑条件if len(matrix) 0 || len(matrix[0]) 0 {return result}m, n : len(matrix), len(matrix[0])left, right, top, bottom : 0, n-1, 0, m-1for left right top bottom {// 从左到右for i : left; i right; i {result append(result, matrix[top][i])}// 从上到下for i : top 1; i bottom; i {result append(result, matrix[i][right])}// 从右到左确保有多行// 在螺旋顺时针遍历矩阵的过程中从右到左的遍历应该在确保存在多行的情况下进行。如果只有一行那么从右到左的遍历就没有意义因为在上一步已经从左到右遍历过了。因此通过 if top bottom 进行判断可以确保在有多行的情况下才进行从右到左的遍历。// 比如 6-7的过程因为经过一轮之后top1bottom1此时6-7是从左到右不需要从右到左下面的left right同理if top bottom {for i : right - 1; i left; i-- {result append(result, matrix[bottom][i])}}// 从下到上确保有多列if left right {for i : bottom - 1; i top; i-- {result append(result, matrix[i][left])}}leftright--topbottom--}return result }
http://www.sczhlp.com/news/238582/

相关文章:

  • 网站建设后台是什么微信公众号登录失败
  • 中国的平面设计网站友情链接是啥意思
  • 网站域名登国外h5网站模板下载
  • seo网站诊断书站长之家统计
  • 专业网站设计制作改版网页开发
  • 基本信息型网站有哪些虚拟主机技术
  • 江北区网站建设app开发大概要多少钱
  • 大连零基础网站建设培训班计算机网页制作题教程
  • 网站被墙301怎么做百度推广电话营销话术
  • 2025年北京无人机执照培训机构推荐榜,caac无人机执照培训机构/caac无人机执照培训基地/聚焦企业服务品质与专业培训能力深度剖析
  • Elasticsearch Hot Threads
  • prometheus监控体系搭建
  • 怎么自己制作属于自己的网站dede网站地图路径
  • 宿迁做网站大公司厦门关键词排名seo
  • 外贸网站定制公司网站建设方案ppt模板
  • 58做二手车网站应该怎么推广合肥瑶海区有什么大学
  • 信阳市网站建设公司网站地图怎么使用
  • 如何做网站支付接口工作室网站需要备案吗
  • 网站建设 好公司大连网站建设吗
  • 做企业网站代码那种好服装网站建设方案
  • 潍坊做电商的网站宁夏建设投资集团公司网站
  • 建立网站导航栏的方法WordPress封面生成
  • 棋牌室的网站怎么做全国seo公司排名
  • 如何在局域网做网站北京建设网站公司推荐
  • 企业网站的建设思维导图wordpress dooplay
  • 专注旅游网站网站开发wordpress积分券
  • 哪里可以接做ppt的网站档案网站建设思考
  • wordpress站安装百度商桥郑州男科
  • 建网站怎样才能通过备案望野朗读
  • 淘宝客网站建设难度大吗上下篇文章wordpress