IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 14天算法入门-第2天-双指针 -> 正文阅读

[大数据]14天算法入门-第2天-双指针

关注并标星微信公众号

?3分钟秒懂大数据

每天1次,打卡阅读

获取AI大数据技术、面经、内推信息

?

1、题目介绍:????????

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

2、示例如下:

图片

3、解题思路:

我们可以使用两个指针分别指向位置 0?和 n-1,每次比较两个指针对应的数,选择较大的那个逆序放入答案并移动指针。这种方法无需处理某一指针移动至边界的情况,读者可以仔细思考其精髓所在。

4、代码如下

(1)JAVA版本

class Solution {    public int[] sortedSquares(int[] nums) {        int n = nums.length;        int[] ans = new int[n];        for (int i = 0, j = n - 1, pos = n - 1; i <= j;) {            if (nums[i] * nums[i] > nums[j] * nums[j]) {                ans[pos] = nums[i] * nums[i];                ++i;            } else {                ans[pos] = nums[j] * nums[j];                --j;            }            --pos;        }        return ans;    }}

(2)Python版本

class Solution:    def sortedSquares(self, nums: List[int]) -> List[int]:        n = len(nums)????????ans?=?[0]?*?n???????        i, j, pos = 0, n - 1, n - 1        while i <= j:            if nums[i] * nums[i] > nums[j] * nums[j]:                ans[pos] = nums[i] * nums[i]                i += 1            else:                ans[pos] = nums[j] * nums[j]                j -= 1????????????pos?-=?1????????        return ans

5、复杂度分析

图片

1、题目介绍:????????

给定一个数组,将数组中的元素向右移动?k?个位置,其中?k?是非负数。

2、示例如下:

图片

3、解题思路:

说是旋转数组,实际上不过是把数组看成一个环,然后给每一位都沿着同一方向移动几个位数

????1 1 1 1 1 2 2 2

????后移3位

????2 2 2 1 1 1 1 1

图片

?

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

4、代码如下:

(1)JAVA版本???????

class Solution {    public void rotate(int[] nums, int k) {        int n = nums.length;        int[] newArr = new int[n];        for (int i = 0; i < n; ++i) {            newArr[(i + k) % n] = nums[i];        }        System.arraycopy(newArr, 0, nums, 0, n);    }}

(2)C++版本???????

class Solution {public:    void rotate(vector<int>& nums, int k) {        int n = nums.size();        vector<int> newArr(n);        for (int i = 0; i < n; ++i) {            newArr[(i + k) % n] = nums[i];        }        nums.assign(newArr.begin(), newArr.end());    }};

5、复杂度分析

图片

以上就是14天算法入门-第2天-双指针讲解内容!觉得好的,点赞,在看,分享三连击,谢谢!!!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:39:36  更:2021-08-15 15:41:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:32:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码