力扣每日一练之双指针1Day8

举报
京与旧铺 发表于 2022/05/27 19:52:59 2022/05/27
【摘要】 力扣每日一练之双指针1Day8🍕前面的话🥞大家好!本篇文章将介绍20天算法刷题计划的题,本文将以两道题作为背景,介绍经典的双指针,展示语言为java(博主学习语言为java)。今天呢,是博主开始刷力扣的第五天,如果有想要开始准备自己的算法面试的同学,可以跟着我的脚步一起,共同进步。大家都是并肩作战的伙伴,一起努力奋力前行,路漫漫其修远兮,吾将上下而求索,相信我们一定都可以拿到自己期望的o...

力扣每日一练之双指针1Day8

🍕前面的话🥞

大家好!本篇文章将介绍20天算法刷题计划的题,本文将以两道题作为背景,介绍经典的双指针,展示语言为java(博主学习语言为java)。今天呢,是博主开始刷力扣的第五天,如果有想要开始准备自己的算法面试的同学,可以跟着我的脚步一起,共同进步。大家都是并肩作战的伙伴,一起努力奋力前行,路漫漫其修远兮,吾将上下而求索,相信我们一定都可以拿到自己期望的offer,冲冲冲!

👩‍💻博客主页:京与旧铺的博客主页

✨欢迎关注🖱点赞🎀收藏⭐留言✒

🔮本文由京与旧铺原创,csdn首发!

😘系列专栏:java学习

💻首发时间:🎞2022年5月11日🎠

🎨你做三四月的事,八九月就会有答案,一起加油吧

🔏参考在线编程网站:🎧力扣

🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲

🏓导航小助手📻


图片


👡Leetcode 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]
 ​
 ​

🦺解题思路

最简单的方法就是将数组 \textit{nums}nums 中的数平方后直接排序。

🥼源代码

 class Solution {
 ​
   public int[] sortedSquares(int[] nums) {
 ​
 •    int[] ans=new int[nums.length];
 ​
 •    for(int i=0;i<nums.length;i++){
 ​
 •      ans[i]=nums[i]*nums[i];
 ​
 •    }
 ​
 •    Arrays.sort(ans);
 ​
 •    return ans;
 ​
   }
 ​
 }

⛸Leetcode189.轮转数组

给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。


 示例 1:
 ​
 输入: nums = [1,2,3,4,5,6,7], k = 3
 输出: [5,6,7,1,2,3,4]
 解释:
 向右轮转 1 步: [7,1,2,3,4,5,6]
 向右轮转 2 步: [6,7,1,2,3,4,5]
 向右轮转 3 步: [5,6,7,1,2,3,4]
 示例 2:
 ​
 输入:nums = [-1,-100,3,99], k = 2
 输出:[3,99,-1,-100]
 解释: 
 向右轮转 1 步: [99,-1,-100,3]
 向右轮转 2 步: [3,99,-1,-100]

🩳解题思路

我们可以使用额外的数组来将每个元素放至正确的位置。用 nn 表示数组的长度,我们遍历原数组,将原数组下标为 ii 的元素放至新数组下标为 (i+k)\bmod n(i+k)modn 的位置,最后将新数组拷贝至原数组即可。

🎱源代码

 class Solution {
     public void rotate(int[] nums, int k) {
           int len=nums.length;
           int[] ans=new int[len];
           for(int i=0;i<len;i++){
               int index=i+k;
               while(index>=len){
                   index-=len;
 ​
               }
               ans[index]=nums[i];
           }
           for(int i=0;i<len;i++){
               nums[i]=ans[i];
           }
     }
 }

🌌总结

通过这三道题,我们学习了双指针,复习了数组和循环的知识,那么呢,期待一下下一篇文章吧,和我一起进步,每天努力多一些,迈出更大的一步


觉得文章写的不错的亲亲,点赞评论关注走一波,爱你们哦🛴

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。