首页 > 其他分享 >力扣977(2)

力扣977(2)

时间:2025-01-13 19:00:33浏览次数:3  
标签:977 平方 题目 指向 力扣 数组 指针

题目及暴力法解法在之前的这篇博客,想了解的可以移步到这里:

力扣977题——有序数组的平方

双指针法:

因为暴力法的时间复杂度还是太高了,有O(nlogn)这么多,这次就使用双指针法只需要O(n):

解题思路

建了一个新数组a用来存放平方,新数组使用一个k指针指向数组的末尾;

(这里数组可以随便起名字,可以叫a也可以起别的;同样指针k也是只要不和java关键字相同)

用一个指针指向题目数组的开头,另一个指向数组的末尾,这里分别用 和 r来定义;

而l <= r呢,就是说两指针相等时也可以说相遇时我们就完成了数组的一次遍历,在遍历时我们要比较两个指针所指向数平方的大小,取出较大值放入我们定义的新数组a中,并让k指针再退一个。

因为题目说按非递减顺序排嘛,如果按照非递增来排,就把k定义到新数组开头,再让k增一个。

那么如此比较,我们最后就能得到一个按照非递减顺讯排列的平方数组a,最后返回a就可以了。

ps:博主是小菜,最后把return写成了result a,还在想哪出错了找半天hh

共勉!

标签:977,平方,题目,指向,力扣,数组,指针
From: https://blog.csdn.net/suibiansa_/article/details/145121507

相关文章

  • 力扣leetcode 416.分割等和子集 动态规划 0-1背包
    题目:给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例1:输入:nums=[1,5,11,5]输出:true解释:数组可以分割成[1,5,5]和[11]。示例2:输入:nums=[1,2,3,5]输出:false解释:数组不能分割成......
  • 力扣-数组-219 存在重复元素Ⅱ
    解析同上一篇《力扣-数组-217存在重复元素》存储在重复元素的思路,重点是放在结构体里,保存之前的下标即可。代码classSolution{public:structmyNode{intindex;intvalue;};staticboolcmp(myNodea,myNodeb){return......
  • 2025/1/12 力扣每日一题(2275.按位与结果大于零的最长组合)
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/largest-combination-with-bitwise-and-greater-than-zero/description/?envType=daily-question&envId=2025-01-12题目:对数组nums执行按位与相当于对数组nums中的所有整数执行按位与。例如,对nums=[1,5,3]来......
  • 2025/01/12 力扣每日一题
    2275.按位与结果大于零的最长组合对数组nums执行按位与相当于对数组nums中的所有整数执行按位与。例如,对nums=[1,5,3]来说,按位与等于1&5&3=1。同样,对nums=[7]而言,按位与等于7。给你一个正整数数组candidates。计算candidates中的数字每种......
  • 【练习】力扣 热题100 最大子数组和
    题目给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1]的和最大,为6。示例2:输入:nums=[1]输出:......
  • 梦开始的地方:力扣热题100哈希表
    文章目录前言一、哈希表是什么二、力扣解题常见的三种哈希结构(java版本)1.数组2.set(集合)3.map(映射)总结前言在刷力扣100题的征程中,我从哈希相关题目入手,一路探索,收获颇丰。如今,想将自己在这一过程中的思路与感悟进行一番总结,既为记录成长,也希望能给同样在算法之路上......
  • 力扣21、合并两个有序链表
    目录1、题目2、思路3、代码若有错误,欢迎指正! 1、题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例......
  • 力扣283题——移除0
    要点就是不说废话,看题: 这题就是快慢指针法的进阶一点点,需要把第一次遍历完的数组再继续填空,把后面的空填充为0,这里给出我的做法:classMain{publicvoidmove(int[]nums){intn=nums.length;intslow=0;for(intfast=0;fast<n;fast++){......
  • 第一天 / 704. 二分查找 / 27. 移除元素 / 977. 有序数组的平方
    704.二分查找左闭右闭classSolution{public:intsearch(vector<int>&nums,inttarget){intleft=0;intright=nums.size()-1;//定义target在左闭右闭的区间里,[left,right]while(left<=right){......
  • 代码随想录算法训练营第一天 | Leetcode 027、Leetcode 704、Leetcode 977
    Leetcode027双指针覆盖目标元素#include"iostream"#include"vector"usingnamespacestd;intremoveElement(vector<int>&nums,intval){inti=0;for(intj=0;j<nums.size();j++){if(nums[j]!=val){......