目录
让我们看看这种情况的各种输入输出场景−
下面程序中使用的方法如下
示例
输出
首页 后端开发 C++ 重新排列一个数组,使得arr变为arr],并且只使用O(1)额外的空间,使用C++实现

重新排列一个数组,使得arr变为arr],并且只使用O(1)额外的空间,使用C++实现

Aug 28, 2023 am 11:53 AM
数组 (array) 重新排列 (rearrange) o() 空间 (o() space)

重新排列一个数组,使得arr变为arr],并且只使用O(1)额外的空间,使用C++实现

我们得到一个正整数类型数组,比方说,任意给定大小的 arr[],这样数组中的元素值应大于 0 但小于数组的大小。任务是重新排列 一个数组,仅在给定的 O(1) 空间内将 arr[i] 变为 arr[arr[i]] 并打印最终结果。

让我们看看这种情况的各种输入输出场景−

输入− int arr[] = {0 3 2 1 5 4 }

输出− 排列前的数组: 0 3 2 1 5 4 重新排列数组,使 arr[i] 变为 arr[arr[i]],并具有 O(1) 额外空间: 0 1 2 3 4 5

解释− 我们给定一个大小为 6 的整数数组,并且数组中的所有元素值小于 6。现在,我们将重新排列数组,即 arr[arr[0] 为 0,arr[arr[1]] 为 1,arr[arr [2]] 为 2,arr[arr[3]] 为 3,arr[arr[4]] 为 4,arr[arr[5]] 为 5。因此,重新排列后的最终数组为 0 1 2 3 4 5.

输入− int arr[] = {1, 0}

输出− 排列前的数组:1 0 重新排列数组,使 arr[i] 变为 arr[arr[i]],其中 O(1) 额外空间为: 0 1

解释 - 我们得到一个整数大小为 2 且数组中所有元素值小于 2 的数组。现在,我们将重新排列该数组,即 arr[arr[0] 为 1,arr[arr[1]] 为 0。因此,重新排列后的最终数组是 0 1。

输入− int arr[] = {1, 0, 2, 3}

输出−排列前的数组:1 0 2 3 重新排列数组,使 arr[i] 变为 arr[arr[i]],并具有 O(1) 额外空间: 0 1 2 3

解释 - 我们给出大小为 4 的整数数组,并且数组中的所有元素值小于 4。现在,我们将重新排列数组,即 arr[arr[0] 为 0,arr[arr[1]] 为 1,arr[arr[2] ]] 为 2,arr[arr[3]] 为 3。因此,重新排列后的最终数组为 0 1 2 3。

下面程序中使用的方法如下

  • 输入一个整型元素数组,计算数组大小

  • 打印排列前的数组,调用函数Rearrangement (arr, size)

  • 函数内部重排(arr, size)

    • 开始循环FOR from i 到 0 直到 i 小于大小。在循环内部,将 temp 设置为 arr[arr[i]] % size 和 arr[i] += temp * size。

    • 开始循环 FOR 从 i 到 0 直到 i小于尺寸。在循环内,设置 arr[i] = arr[i] / size

  • 打印结果。

示例

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
   for(int i=0; i < size; i++){
      int temp = arr[arr[i]] % size;
      arr[i] += temp * size;
   }
   for(int i = 0; i < size; i++){
      arr[i] = arr[i] / size;
   }
}
int main(){
   //input an array
   int arr[] = {0, 3, 2, 1, 5, 4};
   int size = sizeof(arr) / sizeof(arr[0]);
   //print the original Array
   cout<<"Array before Arrangement: ";
   for (int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   cout<<"\nRearrangement of an array so that arr[i] becomes arr[arr[i]] with O(1) extra space is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}
登录后复制

输出

如果我们运行上面的代码,它将生成以下输出

Array before Arrangement: 0 3 2 1 5 4
Rearrangement of an array so that arr[i] becomes arr[arr[i]] with O(1) extra space is: 0 1 2 3 4 5
登录后复制

以上是重新排列一个数组,使得arr变为arr],并且只使用O(1)额外的空间,使用C++实现的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在C语言中,数组的后增和前增 在C语言中,数组的后增和前增 Aug 30, 2023 pm 04:57 PM

问题使用C程序解释数组的后置递增和前置递增的概念。解决方案递增运算符(++)-用于将变量的值增加1有两种类型的递增运算符-前置递增和后置递增。在前置递增中,递增运算符放在操作数之前,值先递增,然后进行操作。eg:z=++a;a=a+1z=a自增运算符在后增运算中放置在操作数之后,操作完成后值会增加。eg:z=a++;z=aa=a+1让我们考虑一个例子,通过使用前增量和后增量来访问内存位置中的特定元素。声明一个大小为5的数组并进行编译时初始化。之后尝试将前增量值赋给变量'a'。a=++arr[1]

如何使用数组和泛型在Java中实现栈? 如何使用数组和泛型在Java中实现栈? Sep 05, 2023 pm 09:25 PM

Java通过利用数组和泛型来实现堆栈。这创建了一个多功能且可重用的数据结构,该结构按照后进先出(LIFO)的原则运行。按照这个原则,元素是从顶部添加和删除的。通过利用数组作为基础,它确保了高效的内存分配和访问。此外,通过合并泛型,堆栈能够容纳不同类型的元素,从而增强其多功能性。该实现涉及包含泛型类型参数的Stack类的定义。它包括基本方法,如push()、pop()、peek()和isEmpty()。边缘情况的处理(例如堆栈溢出和下溢)对于确保无缝功能也至关重要。此实现使开发人员能够创建能够容纳

在Java中,如何向数组添加新元素? 在Java中,如何向数组添加新元素? Jan 03, 2024 pm 03:30 PM

Java中向数组中添加新元素是一种常见的操作,可以使用多种方法实现。本文将介绍几种常见的添加元素到数组的方法,并提供相应的代码示例。一、使用新数组一种常见的方法是创建一个新的数组,将原数组的元素复制到新数组中,并在新数组的末尾添加新元素。具体步骤如下:创建一个新的数组,大小比原数组大1。这是因为要添加一个新元素。将原数组的元素复制到新数组中。在新数组的末尾添

PHP中数组(array)的基本操作和使用方法 PHP中数组(array)的基本操作和使用方法 Jun 28, 2023 pm 08:02 PM

PHP中数组(array)的基本操作和使用方法一、概述数组是PHP中一种非常重要的数据类型,它可以用于存储多个值,并且可以通过索引或者键来访问这些值。数组在PHP中拥有丰富的操作和使用方法,本文将详细介绍PHP中数组的基本操作和使用方法。二、创建数组在PHP中,可以通过两种方式来创建数组:可数数组和关联数组。创建可数数组可数数组是按顺序排列并以数字索引的数组

重新排列一个数组,使得arr变为arr],并且只使用O(1)额外的空间,使用C++实现 重新排列一个数组,使得arr变为arr],并且只使用O(1)额外的空间,使用C++实现 Aug 28, 2023 am 11:53 AM

我们得到一个正整数类型数组,比方说,任意给定大小的arr[],这样数组中的元素值应大于0但小于数组的大小。任务是重新排列一个数组,仅在给定的O(1)空间内将arr[i]变为arr[arr[i]]并打印最终结果。让我们看看这种情况的各种输入输出场景−输入−intarr[]={032154}输出−排列前的数组:032154重新排列数组,使arr[i]变为arr[arr[i]],并具有O(1)额外空间:012345解释−我们给定一个大小为6的整数数组,并且数组中的所有元素值小于6。现在,我们将重新排列

在C/C++中的数组? 在C/C++中的数组? Sep 20, 2023 pm 08:25 PM

数组是相同类型元素的顺序集合。数组用于存储数据的集合,但将数组视为相同类型的变量的集合通常更有用。而不是声明单个变量,例如number0、number1、...和number99,您可以声明一个数组变量(例如数字),并使用numbers[0]、numbers[1]和...、numbers[99]来表示各个变量。数组中的特定元素通过索引访问。所有数组都由连续的内存位置组成。最低地址对应于第一个元素,最高地址对应于最后一个元素。声明数组声明数组需要指定元素的类型以及所需元素的数量。一个数组如下-ty

重新排列数组,使得偶数位置的元素大于奇数位置的元素(C++) 重新排列数组,使得偶数位置的元素大于奇数位置的元素(C++) Aug 30, 2023 pm 06:17 PM

我们得到一个包含正数和负数的整数类型数组,比方说,任意给定大小的arr[]。任务是以这样的方式重新排列数组,使得偶数位置或索引处的所有元素都应大于奇数位置或索引处的元素,并且打印结果。让我们看看这个的各种输入输出场景-输入−intarr[]={2,1,4,3,6,5,8,7}输出−排列前的数组:21436587重新排列数组,使得偶数位置大于奇数位置:12345678解释−我们得到一个大小为8的整数数组,其中包含正数和负面因素。现在,我们将数组重新排列,使得偶数位置的所有元素都大于奇数位置的元素,

深入探究JavaScript内置对象的功能和特性 深入探究JavaScript内置对象的功能和特性 Jan 10, 2024 pm 05:23 PM

深入解析JS内置对象的功能与特点JavaScript是一门基于对象的编程语言,它提供了许多内置对象,这些对象拥有各种丰富的功能和特点。在本文中,我们将深入解析一些常用的内置对象,并给出相应的代码示例。Math对象Math对象提供了一些基本的数学运算方法,如求幂、开方、对数等。以下是一些常用的Math对象的方法示例://求绝对值Math.abs(-10

See all articles