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

网站文章更新注意什么海外销售平台有哪些

网站文章更新注意什么,海外销售平台有哪些,wordpress使用百度地图吗,品牌高端网站制作文章目录有序数组的平方习题暴力排序双指针有序数组的平方 本节对应代码随想录中:代码随想录,讲解视频:有序数组的平方_哔哩哔哩_bilibili 习题 题目链接:977. 有序数组的平方 - 力扣(LeetCode) 给你一…

文章目录

    • 有序数组的平方
      • 习题
      • 暴力排序
      • 双指针

有序数组的平方

本节对应代码随想录中:代码随想录,讲解视频:有序数组的平方_哔哩哔哩_bilibili

习题

题目链接:977. 有序数组的平方 - 力扣(LeetCode)

给你一个按非递减顺序排序的整数数组 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]

暴力排序

直接能想到的就是先把每个元素平方,然后再进行排序即可

class Solution {
public:vector<int> sortedSquares(vector<int>& A) {for (int i = 0; i < A.size(); i++) {A[i] *= A[i];}sort(A.begin(), A.end()); // 快速排序return A;}
};

双指针

首先来说一下为什么可以使用双指针

元素本来就是有序的,只不过因为里面有负数,负数平方后就可能大于某些正数的平方,从而顺序会发生变化

但是无论正数还是负数,其绝对值越大,那么它平方后也就会越大,即数组越靠近两边,平方后就会越大

那么我们就可以使用双指针,一个指向最左边,一个指向最右边。比较两边哪个平方后更大,存入新的数组中。然后更新指针,直到两个指针相遇,说明遍历完了所有的元素。

我的解法如下:

class Solution {public:vector<int> sortedSquares(vector<int>& nums) {int n = nums.size(), j = n - 1, k = n - 1;vector<int> copy = nums;for (int i = 0; i < n; i++,k--) {if (i == j) {nums[0] = copy[i] * copy[i];break;}if (copy[i] * copy[i] > copy[j] * copy[j]) {nums[k] = copy[i] * copy[i];} else {nums[k] = copy[j] * copy[j];j--;i--;}   }return nums;}
};

看了别人的解法有几点可以注意下

  • vector<int> copy = nums; 也可以写成 vector<int> copy(nums.size(), 0);,区别是前者会复制 nums 的元素,而后者会将所有元素置0
  • for 循环中的 i<n 可以 i <= j;,这样就不用再用 if 判断相等时 break 了
  • for 循环中的 i++,k-- 可以在 for 循环里面写,其实这样更符合逻辑,因为并不是每次都要 i++,k-- ,只有满足特定情况时才会这样
  • 不一定要用 for 循环,用 while(i<=j) 来循环更符合逻辑

双指针思考:上一小节的移除元素中,两个指针都在最左边开始,只不过一个快点,一个慢点,快的用来遍历一遍元素,慢的用来指向满足条件的新的数组的下标;而这一节的双指针,一个在左边,一个在右边,两个指针不断比较,然后都往中间靠拢。上一小节的终止条件是快的指针遍历完一遍就停,而这一节的是当两个指针相遇时(i <= j;)停止

http://www.yayakq.cn/news/640289/

相关文章:

  • 广州建设银行分行招聘网站怎么建立自己网站 asp
  • 网站网站怎么做的网站页面设计费用
  • 网站备案号注销的结果用本机做网站浏览
  • 成品网站管理系统 源码平凉市住房和城乡建设局网站
  • 专业摄影网站推荐wordpress 附件目录
  • 深圳外贸响应式网站建设承德网站
  • 做网站一般要多少钱seo标题优化是什么意思
  • wordpress 文章简介模板网站 怎么做优化
  • 网站美工设计基础wordpress 微博同步
  • 做网站前台需要什么技能wordpress去掉cat
  • gif放网站有锯齿wordpress 更改服务器
  • 成都网站建设收费明细网站建设流程是什么意思
  • 佛山品牌网站建设报价腾讯企业邮箱扫码登录
  • 铜川市新区建设局网站搜索引擎网站建设
  • 青岛外贸网站推广广东外贸网站推广公司
  • 青海贸易网站建设公司做一个公司网页要多少钱
  • 湖北企业网站建设多少钱网站建设的目标与思路
  • 沈阳模板建站软件如何免费学校建网站
  • 宁波网站建设流程有哪些北京竞价托管代运营
  • 南昌网站建设开发团队灌南网站建设
  • 企业品牌网站源码只有一个页面的网站怎么做
  • 网站定制开发什么意思福州企业网站建站模板
  • 昆明制作手机网站班级网站开发与设计
  • 包头手机网站制作东山县建设官方网站
  • 龙岗网站制作新闻做电商有哪些网站有哪些
  • 外贸led网站建设企业建设网站哪家好
  • 乌拉圭网站后缀做公司网站主要需要什么科目
  • 合肥高端网站开发深圳网络推广优化
  • 凡科网站建设的技巧深圳建设工程交易中心网站
  • 企业门户网站网站怎么获得合二为一的创意产品设计