java吧 关注:1,226,023贴子:12,682,648

求指导,数组去重!

只看楼主收藏回复

{1,1,3,9,6,1,3,3,6,9,0} 处理后为{1,3,9,6,0}
鄙人一直没把这个问题给理清,麻烦各位给指导一下! 不能使用集合,这没什么意义,百度好久发现都是工具流!


IP属地:广东1楼2014-07-27 18:49回复
    这么快就沉了!


    IP属地:广东2楼2014-07-27 18:57
    回复
      没人帮么?


      IP属地:广东3楼2014-07-27 19:18
      回复
        第一个数与后面的数比较,相同的把后一个数置为一个不可能的数,然后第2个..第i个
        应该可以                                                                   ✈
        看,灰机!!!
         


        IP属地:重庆来自Android客户端4楼2014-07-27 19:25
        收起回复
          吧所有数遍历一边,把出现一次的数字保存在新的数组里,出现2次或更多的就不保存


          来自Android客户端5楼2014-07-27 19:53
          收起回复
            遍历一遍,统统扔到一个Set里,之后toArray不就得了


            IP属地:北京6楼2014-07-27 19:57
            收起回复
              要是字符串可以用正则……原理都差不多,回头我试试


              IP属地:广东来自Android客户端7楼2014-07-27 20:01
              收起回复
                数的范围小的话,可以定义一个数组f,对于每个元素i使f[i]++,然后遍历f,取出不等于0的元素下标。


                IP属地:浙江来自Android客户端8楼2014-07-27 20:49
                收起回复
                  new一个全局的新数组,然后拿老数组的值一个个去比,如果已经存在于新数组里面的就不存。还有什么问题?


                  IP属地:上海9楼2014-07-28 14:57
                  收起回复
                    用ArrayList一个个存进去,每次存进去之前检查里面有没有重复的就行


                    IP属地:广东来自Android客户端10楼2014-07-28 16:16
                    收起回复
                      自卸代码如下:
                      package org.lzy.test;
                      public class TestArray {
                      public static void main(String[] args) {
                      int[] arr = { 1, 1, 1, 3, 9, 9, 9, 6, 1, 3, 3, 6, 9, 0, 0, 0, 0, 0, 9,
                      0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9 };
                      int[] arr2 = { 1, 1, 1, 1, 1 };
                      boolean flag = true;
                      String result = "";
                      for (int i = 0; i < arr.length; i++) {
                      if (i < arr.length - 1) {
                      for (int j = i + 1; j < arr.length; j++) {
                      if (arr[i] == arr[j]) {
                      flag = false;
                      break;
                      } else {
                      flag = true;
                      }
                      }
                      if (flag) {
                      result = result + arr[i] + ",";
                      }
                      } else {
                      int num = arr[i];
                      if (result.indexOf("," + num) == -1) {
                      result = result + num;
                      }
                      }
                      }
                      System.out.println(result);
                      String[] strArr = result.split(",");
                      int[] resultArr = new int[strArr.length];
                      for (int i = 0; i < strArr.length; i++) {
                      resultArr[i] = Integer.parseInt(strArr[i]);
                      }
                      System.out.print("结果数组为:");
                      for (int i = 0; i < resultArr.length; i++) {
                      if (i < resultArr.length - 1) {
                      System.out.print(resultArr[i] + ",");
                      } else {
                      System.out.println(resultArr[i]);
                      }
                      }
                      }
                      }
                      请测试


                      IP属地:北京11楼2014-07-28 16:21
                      回复
                        请忽略错别字```` 不好意思 试了试 没用集合 就是数组和字符串


                        IP属地:北京12楼2014-07-28 16:23
                        回复
                          我们今天刚学数组


                          来自Android客户端13楼2014-07-28 16:24
                          收起回复
                            直接用if就行了


                            IP属地:广东来自Android客户端14楼2014-07-28 16:35
                            回复
                              方法好多啊,比如new 两个数组,一个数组专门装重复的数字,另一个数组专门装不重复的数字,然后一相加就可以。


                              IP属地:吉林15楼2014-07-28 23:24
                              收起回复