1008 数组元素循环右移问题

简介: 1008 数组元素循环右移问题

题目描述

点击直达题目链接

解题思路

本题方法较多,博主就讲一个做法。

首先题目要求是不能使用另一个数组。

我们每次都右移一个数字,在右移的开始前,先保存最右边的数字,然后进行覆盖,最后把保存的数字再覆盖给首元素,这是第一次右移。后面的每一次都是这样实现的,可以递归实现。

还有一个思路:1.全部逆序,2.前面n个逆序,剩余后面的逆序。
读者自己实现一下,用库函数更简单一些

代码

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void f(int* arr,int m,int n)
{
  int temp = arr[m-1];
  int i = 0;
  if (n == 0)
    return;
  for (i = m; i >0; i--)//从后往前覆盖
  {
    arr[i-1] = arr[i -2];
  }
  arr[0] = temp;//让最后一个回到第一个位置
  f(arr, m, n-1);//下一次右移
}
int main()
{
  int m, n;
  scanf("%d%d", &m, &n);
  int* arr = (int*)malloc(m * sizeof(int));
  assert(arr);
  int i = 0;
  for (i = 0; i < m; i++)
  {
    scanf("%d", arr + i);
  }
  f(arr,m, n);
  for (i = 0; i < m; i++)
  {
    printf("%d", arr[i]);
    if (i != m - 1)
      printf(" ");
  }
  free(arr);
  arr = NULL;
  return 0;
}

相关文章
|
数据采集 数据可视化 数据挖掘
使用Python编写Web爬虫实现数据采集与分析
在当今信息化时代,数据是企业发展和决策的重要依据。本文将介绍如何使用Python编写Web爬虫来实现对特定网站数据的自动采集,并结合数据分析技术,为读者展示如何利用爬虫技术获取有价值的信息并进行有效的数据处理和分析。
|
9月前
|
PyTorch API 算法框架/工具
AscendC从入门到精通系列(四)使用Pybind调用AscendC算子
本文介绍了如何通过Pybind11在PyTorch框架中调用自定义的Ascend C算子。首先,通过编写算子的C++实现和pybind11封装,将算子功能暴露给Python。接着,构建Python调用脚本,利用torch接口生成数据并调用封装好的算子模块。最后,通过CMake配置文件编译整个项目,实现从算子开发到测试的完整流程。
|
JavaScript 程序员
Vue学习之--------组件嵌套以及VueComponent的讲解(代码实现)(2022/7/23)
这篇文章通过代码示例和效果图,详细阐述了Vue中组件的嵌套使用,包括创建组件、组件间的嵌套、注册组件以及实现的效果。同时,文章还介绍了VueComponent的相关知识,包括组件实例对象和Vue实例对象的区别。
Vue学习之--------组件嵌套以及VueComponent的讲解(代码实现)(2022/7/23)
|
Kubernetes API 数据库
在K8S中,etcd数据库中数据如何更改?
在K8S中,etcd数据库中数据如何更改?
|
10月前
|
存储 安全 前端开发
数字货币交易所系统开发技术方案规则
数字货币交易所系统的开发涉及市场调研、功能需求、性能与安全、技术选型、系统设计、通信数据流、开发实现及测试调优等多个环节。本文档概述了各环节的关键技术方案和规则,旨在指导开发者构建高效、安全的数字货币交易平台。
|
存储 设计模式 Java
Java8 CompletableFuture异步编程-入门篇
Java8 CompletableFuture异步编程-入门篇
|
11月前
|
存储 Python
使用django构建一个多级评论功能
使用django构建一个多级评论功能
145 0
|
存储 Prometheus 监控
在Linux中,如何进行系统资源的监控?
在Linux中,如何进行系统资源的监控?
|
边缘计算 人工智能 运维
浪潮信息分论坛回顾来啦!共商开源开放、赋能智算之道 | 2023 龙蜥操作系统大会
在龙蜥操作系统大会上,浪潮信息首次展示以云峦 KeyarchOS 为基础底座的系统软件全栈能力。
浪潮信息分论坛回顾来啦!共商开源开放、赋能智算之道 | 2023 龙蜥操作系统大会
|
前端开发 JavaScript Java
使用Springboot 2.7+Websocket+js实现服务端消息实时推送
使用Springboot 2.7+Websocket+js实现服务端消息实时推送
使用Springboot 2.7+Websocket+js实现服务端消息实时推送