java排序一个数组(数组元素有java 数组 重复的元素),并且记住新数组的元素在原数组中的位置,我需要能够运行的程序!

java去除已排序数组中的重复元素
字体:[ ] 类型:转载 时间:
这篇文章主要为大家详细介绍了java去除已排序数组中重复元素的方法,感兴趣的小伙伴们可以参考一下
给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度。
不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作。
给出数组A=[1,1,2],你的函数调用之后必须返回长度length=2,并且A现在变成[1,2]。
一个已排序的数组,例如[1,1,2]。
返回数组新的长度,例如length=2。
快慢指针法
设置fast指针遍历数组,slow指针指向不重复元素的下一位。
public static int removeDuplicates(int[] nums)
if (nums.length & 1)
return nums.
int slow = 1;
for (int fast = 1; fast & nums. fast++) {
if (nums[fast] != nums[slow - 1]) {
nums[slow++] = nums[fast];
动画演示:
去除已排序数组中的重复元素,保留指定位数。
public static int removeDuplicatesN(int[] nums, int repeatN)
if (nums.length &= repeatN)
return nums.
int index = repeatN;
for (int i = repeatN; i & nums. i++) {
if (nums[i] != nums[index - repeatN]) {
nums[index++] = nums[i];
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具一个数组中重复的元素放到最前面,重复个数越多越在前面【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:634,215贴子:
一个数组中重复的元素放到最前面,重复个数越多越在前面收藏
一个数组中重复的元素放到最前面,重复个数越多越在前面,重复元素按照降序,其余的降序排序
登录百度帐号推荐应用拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(38ebeca-ua98).
重新安装浏览器,或使用别的浏览器java中对一个一维数组进化排序,然后想得到排序后的数组元素对应的原始下标? - 知乎6被浏览397分享邀请回答{ 2: [0],
代码如下:import java.util.ArrayList;
import java.util.HashMap;
java.util.Arrays;
public class SortedIndex {
static HashMap&Integer, ArrayList&Integer&& buildInvertedIndexTable(int [] array){
HashMap&Integer,ArrayList&Integer&& iit = new HashMap&Integer,ArrayList&Integer&&();
for (int i = 0; i & array.length; ++i){
if (iit.get(array[i]) == null){
ArrayList&Integer& values= new ArrayList&Integer&();
values.add(i);
iit.put(array[i], values);
ArrayList&Integer& values= iit.get(array[i]);
values.add(i);
iit.replace(array[i], values);
return iit;
public static void main(String [] args){
int a[] = {2,1,1,3};
HashMap&Integer, ArrayList&Integer&& map = buildInvertedIndexTable(a);
int sorted_array[] = a.clone();
Arrays.sort(sorted_array);
// print original array
for (int i:a){
System.out.print(""+ i +",");
System.out.println();
// print new array
for (int i : sorted_array){
System.out.print(""+ i+",");
System.out.println();
// print map
for (int i : sorted_array) {
System.out.println("the number " + i + " appears in the original array: " + map.get(i));
找原来的index的时候你就直接map.get(sortedArray[i])就可以get原来的index list了。不想用hash的话建一个data structure,代码如下:第一个文件 Number.java:public class Number implements Comparable&Number&{
Integer data;
int index;
Number(int d, int i){
this.data = d;
this.index = i;
public int compareTo(Number o) {
return this.data.compareTo(o.data);
第二个文件SortedIndex.java:import java.util.Arrays;
public class SortedIndex {
public static void main(String [] args){
int a[] = {2,1,1,3};
Number sorted[] = new Number[a.length];
for (int i = 0; i & a.length; ++i) {
sorted[i] = new Number(a[i], i);
Arrays.sort(sorted);
//print sorted array
for (Number n : sorted){
System.out.print("" + n.data +",");
System.out.println();
// print original index
for (Number n: sorted){
System.out.print("" + n.index + ",");
System.out.println();
还有很多其他办法,这两种方法你先试着,不够快了或者不符合你的需求了再留言01 条评论分享收藏感谢收起01 条评论分享收藏感谢收起

我要回帖

更多关于 java 数组 重复的元素 的文章

 

随机推荐