面试考到的一个问题

本文介绍了一种判断整型数组中的元素是否能构成连续数字序列的方法,并提供了两种不同的实现方式。第一种方法通过遍历寻找最大最小值并验证每个可能的数值是否存在;第二种方法尝试利用映射来检查元素之间的连续性。
Code:
  1. /**
  2. *给定一个int数组,写一个函数判断该数组中的所有数字是否能组成连续数字。
  3. *如[1,3,4,6,2,5]能组成连续数字,【1,2,5,4,7】不能。数组中的数也可能重复.
  4. *
  5. *@authorAdministrator2010-5-29
  6. */
  7. publicstaticbooleanisContinousArray1(int[]intArr){
  8. if(intArr==null)
  9. returnfalse;
  10. if(intArr.length<2)
  11. returntrue;
  12. intmaxInt=intArr[0],minInt=intArr[0];
  13. for(inti:intArr){
  14. if(i>maxInt)
  15. maxInt=i;
  16. if(i<minInt)
  17. minInt=i;
  18. }
  19. for(intvalue=minInt;value<=maxInt;value++){
  20. booleanfound=false;
  21. for(intj:intArr){
  22. if(j==value){
  23. found=true;
  24. break;
  25. }
  26. }
  27. if(!found)
  28. returnfalse;
  29. }
  30. returntrue;
  31. }
  32. publicstaticvoidisContinousArray2(int[]arr){
  33. Map<Integer,Integer>map=newTreeMap<Integer,Integer>();
  34. for(inti:arr){
  35. map.put(i,(i-1));
  36. }
  37. booleanfirstIsNull=true;
  38. for(inti:map.keySet()){
  39. if(map.get(map.get(i))!=null){
  40. System.out.println("能组成连续数字.");
  41. continue;
  42. }elseif(firstIsNull){
  43. firstIsNull=false;
  44. }else{
  45. System.out.println("不能组成连续数字.");
  46. break;
  47. }
  48. }
  49. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值