请使用基于JVM的语言解决下列问题,尽可能考虑执行效率与代码整洁度:

2.
问题:
小明在一家服装店工作。他有一大堆袜子,但他必须按颜色配对出售。
给定一组表示每个袜子颜色的整数,确定有多少对具有匹配颜色的袜子。
例如,有7只带有颜色的袜子,分别是 [1,2,1,2,1,3,2]。有一双带有颜色1的袜子,和一双带有颜色2的袜子,最后剩下三个落单的袜子,所以最后有2双成对的袜子。
输入格式:
第一行包含一个整数,表示袜子只数。第二行包含空格分隔的整数,用于描述每只袜子的颜色。
输出格式:
返回可以出售的成对袜子的总数。
样本输入
9
10 20 20 10 10 30 50 10 20
样本输出
3
答案:

3.
问题:
给定一个整数数组,确定是否可以仅使用以下操作之一按升序对数组完成排序:
1. 交换两个元素。
2. 反转一个子数组。
如果仅使用两个操作中的任意一个都能完成排序,则选择第一项操作:交换两个元素。
例如,给定一个数组 [2,3,5,4],交换元素5和元素4的位置,或者逆转子数组A[3..4],都能达成目标,则选择交换元素5和元素4的位置。
输入格式:
第一行包含一个整数,表示数组大小。第二行包含空格分隔的整数,为数组中的元素。
输出格式:
1. 如果数组已经排序,则在第一行输出yes。不需要输出其他内容。
2. 如果可以使用一个操作(来自两个允许的操作)对此数组进行排序,则在第一行输出yes,然后:
a. 如果操作为交换两个元素,A[l]和A[r],则在第二行输出 swap l r,l和r为元素在数组中的下标,假设数组下标从 1 到 n。
b. 如果操作为反转一个子数组,A[l..r],则在第二行输出 reverse l r,l和r为元素在数组中的下标,假设数组下标从 1 到 n。
注意:如果操作a、b都能对数组进行排序,则选择操作a。
3. 如果无法以任何方式对数组进行排序,请在第一行输出no。

样本输入1
3
3 1 2
样本输出1
no

样本输入2
6
1 5 4 3 2 6
样本输出2
yes
reverse 2 5
答案:

1个回答

实现思路:基于 JVM 的语言,可以选 Java。
需求已经限定了数据结构,使用数组,通过反转或交换数组元素完成排序。
而排序算法又有很多种,可以选择最简单的冒泡排序。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问