整型数组按个位值排序 - 华为OD统一考试(C卷)

OD统一考试(C卷)

分值: 100分

题解: Java / Python / C++

alt

题目描述

  • 给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变
  • 当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。

输入描述

给定一个非空数组,其元素数据类型为32位有符号整数,数组长度[1,1000]

输出描述

输出排序后的数组

示例1

输入:
1,2,5,-21,22,11,55,-101,42,8,7,32输出:
1,-21,11,-101,2,22,42,32,5,55,7,8

题解

这道题目是关于排序算法的问题,具体来说是按照数组元素的十进制最低位及元素索引位置进行排序。、

解题思路

  1. 首先,读入非空数组,将数组中的每个元素按照题目要求计算其十进制最低位,并记录下来该元素的索引位置和原始值。
  2. 创建一个辅助数组或列表,将每个元素的十进制最低位、索引位置和原始值组成一个元组,放入辅助数组中。
  3. 使用排序算法对辅助数组进行排序,排序规则是按照十进制最低位从小到大排序,如果最低位相同,则按照索引位置从小到大排序。
  4. 排序完成后,从辅助数组中提取原始值,即为排序后的结果。

Java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
/*** @author code5bug*/
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int[] nums = Arrays.stream(scanner.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();ArrayList<int[]> arr = new ArrayList<>();for (int i = 0; i < nums.length; i++) {int t = nums[i];int d = (t < 0) ? (-t) % 10 : t % 10;arr.add(new int[]{d, i, t});}// 按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变(坐标升序)Collections.sort(arr, (a, b) -> {if (a[0] == b[0]) {return Integer.compare(a[1], b[1]);} else {return Integer.compare(a[0], b[0]);}});for (int i = 0; i < arr.size(); i++) {System.out.print(arr.get(i)[2]);if (i + 1 == arr.size())System.out.println();elseSystem.out.print(',');}}
}

Python

def main():nums = list(map(int, input().split(",")))arr = []for idx, t in enumerate(nums):d = (-t) % 10 if t < 0 else t % 10  # 最低位元素值arr.append((d, idx, t))arr.sort()rs = list(map(lambda x: x[2], arr))print(*rs, sep=',')if __name__ == "__main__":main()

C++

#include <bits/stdc++.h>
using namespace std;int main()
{// 元素值 vector<int> {最低位元素值, 元素在原数组中的索引位置, 数组中元素值}vector<vector<int>> arr;int t, idx = 0;while (cin >> t) {int d = (t < 0) ? (-t) % 10 : t % 10;   // 最低位元素值arr.push_back({d, idx, t});if (cin.peek() == ',') cin.ignore();idx++;}sort(arr.begin(), arr.end());for (size_t i = 0; i < arr.size(); i++) {cout << arr[i][2];if (i + 1 == arr.size())cout << endl;elsecout << ',';}return 0;
}    

有考友通过专栏已经快速通过机考✍,都是原题哦, 🎁🎁🎁 立即订阅

希望这个专栏不仅能帮您成功通过华为机试,还能让您熟练掌握算法。

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四.排序(冒泡/选择)

目录 11-排序介绍 常见排序算法: 12-冒泡排序介绍 代码要求: 思路: 13-冒泡排序 代码: 14-选择排序 简单写法: 好的写法: 11-排序介绍 排序&#xff1a;将一组“无序”的记录序列调整为“有序”的记录序列。 列表排序&#xff1a;将无序列表变为有序列表 输入&#…

CentOS 7 编译安装 Nginx

CentOS 7 编译安装 Nginx 背景下载 Nginx 源码包安装依赖包编译添加环境变量添加守护查考文献 背景 一开始使用 docker 搭建了一个 web 服务器&#xff0c;但是由于 docker 不太方便的部署 TLS 证书&#xff0c;故使用 Nginx 做反向代理&#xff0c;实现 https 连接。 下载 N…

C#进阶实践项目(俄罗斯方块)

CSharp进阶实践项目--俄罗斯方块 1.需求分析 2.复用贪吃蛇开始等场景切换的代码 &#xff08;自己写一遍&#xff0c;不难&#xff01;&#xff01;&#xff01;&#xff09; 入口&#xff1a; 更新接口&#xff1a; Game 类&#xff1a; BeginOrEndBaseScene 类&#xff1a;…

【Flink】Flink 中的时间和窗口之窗口API使用

1. 窗口的API概念 窗口的API使用分为按键分区和非按键分区&#xff0c;在定义窗口操作之前&#xff0c;首先就要确定好是基于按键分区Keyed的数据流KeyedStream来开窗还是基于没有按键分区的DataStream上开窗。 1.1 按键分区窗口&#xff08;Keyed Windows&#xff09; 按键…

Android视角看鸿蒙第六课(module.json5中的各字段含义之pages)designWidth的用法

Android视角看鸿蒙第六课(module.json5中的各字段含义之pages&#xff09; 导读 前面几篇文章&#xff0c;我们陆续分析了entry->src->main下的module.json5中的各个字段的含义及作用。目前剩余pages和abilities两个字段&#xff0c;本篇文章一起来了解pages。 过程有错…

用Stable Diffusion生成同角色不同pose的人脸

随着技术的不断发展&#xff0c;我们现在可以使用稳定扩散技术&#xff08;Stable Diffusion&#xff09;来生成同一角色但不同姿势的人脸图片。本文将介绍这一方法的具体步骤&#xff0c;以及如何通过合理的提示语和模型选择来生成出更加真实和多样化的人脸图像。 博客首发地…

【Python】进阶学习:一文解决如何从指定的源目录中,挑选出符合条件的文件,并将这些文件复制到目标目录中

【Python】进阶学习&#xff1a;一文解决如何从指定的源目录中&#xff0c;挑选出符合条件的文件&#xff0c;并将这些文件复制到目标目录中 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化…

音频剪辑软件评测,哪一款最适合你?

“音频剪辑小白求解&#xff01;我正在制作一部个人纪录片&#xff0c;拍摄了很多原始音频素材&#xff0c;但是需要进行剪辑和整理才能使用。我完全不懂音频剪辑&#xff0c;请问有没有简单易懂的教程或者方法&#xff0c;帮助我快速上手并完成剪辑工作呢&#xff1f;” 随着…

5_相机标定_3_calibrateCamera()例子

上次介绍了calibrateCamera()接口参数&#xff0c;这次实际调用。 程序中所用标准标定板。 一、图片预处理 使用的图片原像素是3072*2048&#xff0c;即600万像素&#xff0c;处理起来不快&#xff1b;改成了560*420&#xff0c;即20万像素。调用opencv接口如下&#xff1a; //…

阿里通义灵码体验

点击访问体验 之前有体验过github的代码助手&#xff0c;奈何收费了&#xff0c;上周发现有一个免费的代码助手。 下载安装 vscode 搜索扩展 TONGYI Lingma 安装完成后登陆即可体验 写注释让他写代码 根据上下文自动补充 这里我只写了一个方法名&#xff0c;getAgencyList…

linux安装erlang

摘要 Erlang是一种通用的面向并发的编程语言&#xff0c;它由瑞典电信设备制造商爱立信所辖的CS-Lab开发&#xff0c;目的是创造一种可以应对大规模并发活动的编程语言和运行环境。 环境准备 系统环境 使用命令&#xff1a;uname -a 或者 uname -r&#xff0c;执行后如下&a…

浅谈SQL注入漏洞原理及利用方式

1.SQL注入 原理&#xff1a; 在数据交互中&#xff0c;前端的数据传入到后台处理时&#xff0c;由于后端没有做严格的判断&#xff0c;导致其传入的恶意“数据”拼接到SQL语句中后&#xff0c;被当作SQL语句的一部分执行。漏洞产生于脚本&#xff0c;注入是针对数据库进行。 …

Javaweb的学习21_CSS_属性

CSS的属性 (常用)属性&#xff1a; 1. 字体、文本 font-size&#xff1a;字体大小 color&#xff1a;文本颜色 text-align&#xff1a;文本的对齐方式 line-height&#xff1a;行高 2. 背景 background&#xff1a;是个复合属性 3. 边框 border&#xff1a;设置边框&#xff0c…

WordPress自动生成原创文章插件

WordPress作为最受欢迎的内容管理系统之一&#xff0c;为博客和网站的搭建提供了便捷的解决方案。而在内容创作方面&#xff0c;自动生成原创文章的插件为WordPress用户提供了更为高效的选项。 什么是WordPress自动生成原创文章插件&#xff1f; WordPress自动生成原创文章插件…

【NLP学习记录】One-Hot编码

1. One-Hot编码概念 one-hot编码的基本思想是将每个类别映射到一个向量&#xff0c;其中只有一个元素的值为1&#xff0c;其余元素的值为0。这样&#xff0c;每个类别之间相互独立&#xff0c;不存在顺序或距离关系。 举例&#xff1a;对于三个类别的情况&#xff0c;可以使用…

基于协同过滤的毕业生就业推荐系统python+django+flask

功能&#xff1a; 管理员&#xff1a;主页、个人中心、求职者管理、企业管理、招聘信息管理、就业信息管理、面试邀请管理、就业签约管理、投递的简历管理、系统管理 企业&#xff1a;主页、个人中心、求职者管理、招聘信息管理&#xff08;可看见所有的招聘信息。发布招聘信息…

三 C#插入排序算法

简介 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 插入排序实现原理 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 具体实现步骤…

【iOS】Blocks

文章目录 前言一、什么是Blocks二、Blocks模式1.Block语法2.Block类型变量3.截获自动变量值4.__block说明符5.截获的自动变量 三、Blocks的实现1.Block的实质__main_block_impl_0Block对象的实现结构体初始化 2.截获自动变量值3.__block说明符4.Block存储域5.__block变量存储域…

数据结构——lesson10排序之插入排序

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

python之数据类型转换

基本数据类型转换 Python 中基本数据类型转换的方法有下面几个。 方法说明int(x [,base ])将x转换为一个整数float(x )将x转换到一个浮点数complex(real [,imag ])创建一个复数str(x )将对象 x 转换为字符串repr(x )将对象 x 转换为表达式字符串eval(str )用来计算在字符串中…