黑马程序员技术交流社区

标题: 点招真题,今天被虐了 [打印本页]

作者: Dreamkele    时间: 2016-10-14 19:35
标题: 点招真题,今天被虐了
题目很简单:定义一个方法,将int数组中只出现一次的数打印出来.


作者: evan.zhou    时间: 2016-10-14 20:35
哪个校区啊,基础班刷人吗
作者: evan.zhou    时间: 2016-10-14 20:36
哪个校区啊,基础班刷人吗
作者: wangyuit    时间: 2016-10-14 20:42
怎么做呢?

作者: IceLoveInFire丶    时间: 2016-10-14 20:44
public static void main(String[] args) {
                int[] arr = { 3, 1, 2, 6, 8, 2, 1, 4, 5, 0, 8, 5, 133, 12, 314, 344, 314, 9, 1, 4, 6 };
                HashSet<Integer> hs = new HashSet<>();
                for (Integer i : arr) {
                        hs.add(i);
                }
                for (Integer i : hs) {
                        System.out.println(i);
                }
}
大哥 一分钟不到。
作者: 面向懵逼    时间: 2016-10-14 21:12
- - 还在基础班奋斗
看看是不是这样
public static void main(String[] args) {
                int []arr = {1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1,10};
                Map<Integer, Integer> map = new HashMap();
                for (int i = 0; i < arr.length; i++) {
                        if (!(map.containsKey(arr[i]))) {
                                map.put(arr[i], 1);
                        }else {
                                map.put(arr[i], map.get(arr[i])+1);
                        }
                }
                Set<Entry<Integer, Integer>> en = map.entrySet();
                for (Entry<Integer, Integer> e : en) {
                        if (e.getValue()<=1) {
                                System.out.println(e.getKey());
                        }
                }
        }
作者: hysnxdss    时间: 2016-10-14 22:01
6666666   楼上两位都是大神

作者: yyl010    时间: 2016-10-14 22:10
public static void main(String[] args) {
                int [] arr = {1,3,6,45,67,35,1,35,4,6,8,25,45};
                HashMap<Integer, Integer> hm = new HashMap<>();
for (int i = 0; i < arr.length; i++) {
        hm.put(arr[i], hm.containsKey(arr[i])?hm.get(arr[i])+1:1);  //计数
}
               
                for (Integer in :  hm.keySet()) {
                        if (hm.get(in)==1) {//查找只出现一次的元素
                                System.out.println(in);
                        }
                }
        }
作者: 蓝光四号    时间: 2016-10-14 22:10
看不懂的说
作者: Jerry007    时间: 2016-10-14 22:29
哥们,这题目确实不难啊

[Java] 纯文本查看 复制代码
import java.util.HashSet;


public class Test5 {

        /**
         * 定义一个方法,将int数组中只出现一次的数打印出来.
         */
        public static void main(String[] args) {
                int[] arr = {1,22,6,6,44,33,1};
                print(arr);
        }

        public static void print(int[] arr) {
                HashSet<Integer> hs = new HashSet<Integer>();
                for (int i = 0; i < arr.length; i++) {
                        hs.add(arr);
                }
                System.out.println(hs);
        }
}


显示结果为:[1, 33, 6, 22, 44]
作者: 一半的留言    时间: 2016-10-14 22:31
666666666666666666
作者: Jarc    时间: 2016-10-14 22:34
厉害,学习

作者: 哦啊啊    时间: 2016-10-14 22:47
不要放弃啊 加油~
作者: Dreamkele    时间: 2016-10-14 22:49
Jerry007 发表于 2016-10-14 22:29
哥们,这题目确实不难啊

[mw_shl_code=java,true]import java.util.HashSet;

将int数组中只出现一次的数打印出来!!仔细看题,是只出现一次不是去重复,比如{1,2,3,3}输出的应该是{1,2}!今天我就是被这个题坑了,思维固定了...
作者: bahamut322    时间: 2016-10-14 22:50
谢谢楼主分享,存进set集合
作者: Larryleo    时间: 2016-10-14 22:51
这要看有没有规定用什么方式了,如果没有规定那就很简单了
作者: Dreamkele    时间: 2016-10-14 22:52
IceLoveInFire丶 发表于 2016-10-14 20:44
public static void main(String[] args) {
                int[] arr = { 3, 1, 2, 6, 8, 2, 1, 4, 5, 0, 8, 5, 133, 12 ...

大哥,你做错了,是将只出现一次的数打印出来,不是去重,{1,2,3,3}--->打印1,2 不是 1,2,3 点招题还是很坑的~
作者: Jerry007    时间: 2016-10-14 22:58
Dreamkele 发表于 2016-10-14 22:49
将int数组中只出现一次的数打印出来!!仔细看题,是只出现一次不是去重复,比如{1,2,3,3}输出的应该是{1,2}! ...

这题目本身出的有问题,我按照要求将int数组中只出现一次的数字打印出来了啊,只是没按照int数组的方式打印出来而已,题目也没说要按照int数组的方式打印啊,我觉得我做的没毛病.
作者: IceLoveInFire丶    时间: 2016-10-14 23:03
Dreamkele 发表于 2016-10-14 22:52
大哥,你做错了,是将只出现一次的数打印出来,不是去重,{1,2,3,3}---&gt;打印1,2 不是 1,2,3 点招题还是很坑的 ...

对奥,明天看看吧

作者: Dreamkele    时间: 2016-10-14 23:09
面向懵逼 发表于 2016-10-14 21:12
- - 还在基础班奋斗
看看是不是这样
public static void main(String[] args) {

这个思路可以,可惜当时我没想到~不过最好是封装成一个方法~
作者: Dreamkele    时间: 2016-10-14 23:12
evan.zhou 发表于 2016-10-14 20:35
哪个校区啊,基础班刷人吗

北京校区,基础班跟不上的话有调班的~升就业班会刷人的
作者: Zzh94520    时间: 2016-10-14 23:15
................................
作者: yiwenbin    时间: 2016-10-14 23:16
好几个兄弟做的是,把重复的数字去掉,这和题目不一样

作者: yinyujue    时间: 2016-10-14 23:41
我的常规思路,是麻烦了点....
int[] arr = {1,1,3,3,5,5,8,9,10,11,11,11,12,12,12,12};
                HashSet<Integer> hs = new HashSet<>();
                //定义记录重复现的值
                int repetitionNum = 0;
                for (int i : arr) {
                        if (!hs.contains(i)) {
                                hs.add(i);                         //如果不包含就添加进来
                        }else {
                                //如果包含就删除相同的,注意:如果重复出现的数个数是单数,11,11,11
                                //(接上)那么就会只删除前两个,换而言之,就是删除前面成对出现的数
                                hs.remove(i);       
                                //此时再记录出现的值,避免重复个数是单数的时候却还没删除干净
                                repetitionNum = i;
                        }
                        //再次删除没删除干净的数
                        hs.remove(repetitionNum);
                }
                //打印
                for (Integer integer : hs) {
                        System.out.println(integer);
                }
作者: 792241113    时间: 2016-10-15 00:22
HaspMap就行  利用键值的   有就给值+1; 然后遍历 打印值 是1的键
作者: jinjinjin    时间: 2016-10-15 00:57
哈哈哈哈
作者: gao5867565    时间: 2016-10-15 02:29
直接用HashMap就能做了
作者: 毛线123    时间: 2016-10-15 07:48
马克£

作者: 蓝光四号    时间: 2016-10-15 07:51
666666666

作者: yyl010    时间: 2016-10-15 11:50
yyl010 发表于 2016-10-14 22:10
public static void main(String[] args) {
                int [] arr = {1,3,6,45,67,35,1,35,4,6,8,25,45};
                HashMap ...

同学们都这么写,写习惯了,其实if else也是一样的.
作者: 若白衣卿相    时间: 2016-10-15 12:50
努力啊,不止一次机会吧,我看下面有些人读题不认真就回复啊

作者: DemoFisher    时间: 2016-10-15 13:39
共勉!
package com.heima.dianzhao;
import java.util.HashMap;
import java.util.Map;

public class Demo1_Int {

        /*
         * 定义一个方法,将int数组中只出现一次的数打印出来.
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int[] arr = {3,3,4,5,6};
                getArray(arr);
        }
        private static void getArray(int[] arr) {
                // TODO Auto-generated method stub
                Map<Integer,Integer> map = new HashMap<>();
                for (int i = 0; i < arr.length; i++) {
                        if (!map.containsKey(arr[i])) {
                                map.put(arr[i], 1);
                        }else {
                                int value = map.get(arr[i]);
                                map.put(arr[i], value + 1);
                        }
                }       
                for (Integer i : map.keySet()) {
                        if (map.get(i) == 1) {
                                System.out.println(i);
                        }
                }               
        }
}
作者: Array先生    时间: 2016-10-15 13:56
IceLoveInFire丶 发表于 2016-10-14 20:44
public static void main(String[] args) {
                int[] arr = { 3, 1, 2, 6, 8, 2, 1, 4, 5, 0, 8, 5, 133, 12 ...

只出现一次,理解错了吧哥们,不是让去重
作者: Array先生    时间: 2016-10-15 14:02
本帖最后由 Array先生 于 2016-10-15 14:07 编辑

public class Demo{
     public static void main(String[] args){
          int[] arr =  readForArr();                for(int i = 0;i < arr.length;i++){
            int count= 0;
             for(int j = 0;j < arr.length;j++){
                if(arr == arr[j]){
                  count++;
            }     
        }  
         if(count==1){
               System.out.print("出现一次的数字有"+arr);
        }
    }
    }
    public static int[] readForArr(){
          int[] arr = {1,2,3,1,2,3,4,5};
          return arr;
   }
}


作者: IceLoveInFire丶    时间: 2016-10-15 14:48
public static void main(String[] args) {
                int[] arr = { 3, 1, 2, 6, 8, 2, 1, 4, 5, 0, 8, 5, 133, 12, 314, 344, 314, 9, 1, 4, 6 };
                HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
                for(int i :arr){
                        map.put(i, 0);
                }
                for (int i : arr) {
                        map.put(i, (map.get(i)+1));
                }
                Set<Integer> keySet = map.keySet();
                for(int i : keySet){
                        if(map.get(i)==1){
                                System.out.println(i);
                        }
                }
        }
作者: barny    时间: 2016-10-15 20:30
我晕,我是后付费的社招进来的...那题目....我就呵呵了
作者: fdzx0707fh    时间: 2016-10-15 23:57
说实话不难啊
作者: Dreamkele    时间: 2016-10-16 09:44
若白衣卿相 发表于 2016-10-15 12:50
努力啊,不止一次机会吧,我看下面有些人读题不认真就回复啊

恩,考试的时候我也觉得很简单,结果错了,不过现在顺利进黑马就业班了
作者: 细听风语为梧桐    时间: 2016-10-16 11:40
evan.zhou 发表于 2016-10-14 20:36
哪个校区啊,基础班刷人吗

我是北京校区,基础班升就业班肯定刷人的,七八十个人至少刷20个
作者: 细听风语为梧桐    时间: 2016-10-16 11:41
面向懵逼 发表于 2016-10-14 21:12
- - 还在基础班奋斗
看看是不是这样
public static void main(String[] args) {

map可以,set也可以的哈。set代码量比较少
作者: 细听风语为梧桐    时间: 2016-10-16 11:45
public class 练习2 {
        /* . */
        public static void main(String[] args) throws IOException, ParseException {
                int [] arr={1,2,2,7,0,9,3,3,5,4,5,4};
                TreeMap<Integer, Integer> t= new TreeMap<>();
                for (int i = 0; i < arr.length; i++) {
                        t.put(arr[i], t.containsKey(arr[i])?t.get(arr[i])+1:1);
                }
                Set<Entry<Integer, Integer>> e = t.entrySet();
                for (Entry<Integer, Integer> entry : e) {
                        if(entry.getValue()==1){
                                System.out.println(entry.getKey());
                        }
                }
        }
}
题目没有说按照数组排序的顺序打印出来,只是说把单个的打印!!!
作者: IceLoveInFire丶    时间: 2016-10-16 13:24
细听风语为梧桐 发表于 2016-10-16 11:40
我是北京校区,基础班升就业班肯定刷人的,七八十个人至少刷20个

升黑马吗?刷20个?

作者: 细听风语为梧桐    时间: 2016-10-16 13:26

看你是Android还是javaEE
作者: Dreamkele    时间: 2016-10-16 15:56

我们班升黑马就业班,一次通过率大概50%多,二次,三次我就不知道了,肯定会有一部分人上不了黑马就业班的,而且不少~
作者: 哦啊啊    时间: 2016-10-16 18:36
蓝瘦香菇蓝瘦

作者: 冷猫    时间: 2016-10-16 21:58
仰望大神,
作者: evan.zhou    时间: 2016-10-26 11:13
barny 发表于 2016-10-15 20:30
我晕,我是后付费的社招进来的...那题目....我就呵呵了

要在论坛有技术分是不是只针对社招的要求?
在黑马参加基础班的学员是不是直接考试?
作者: barny    时间: 2016-10-26 13:07
evan.zhou 发表于 2016-10-26 11:13
要在论坛有技术分是不是只针对社招的要求?
在黑马参加基础班的学员是不是直接考试? ...

不是社招.是后付费
作者: evan.zhou    时间: 2016-10-26 14:08
barny 发表于 2016-10-26 13:07
不是社招.是后付费

基础班开班了,为何班主任没说这个事啊
作者: evan.zhou    时间: 2016-10-26 14:11
贷款算后付费吗
作者: Dreamkele    时间: 2016-10-26 19:17

不算,先付费包括直接交清学费和贷款交学费,后付费是先不交学费,工作后交
作者: 小莫好大只    时间: 2016-10-26 19:53
握草..不看楼下我还以为也是去重...
作者: 老爹很帅    时间: 2016-10-26 21:55
这个,貌似比较简单
作者: 蔡永汪    时间: 2016-10-26 21:59
IceLoveInFire丶 发表于 2016-10-14 20:44
public static void main(String[] args) {
                int[] arr = { 3, 1, 2, 6, 8, 2, 1, 4, 5, 0, 8, 5, 133, 12 ...

我勒个去~~~~没看懂~~~大神级别的~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2