到这就结束了吗,后边还会更新不
老师这个为什么?
这一步为什么要加个1呢
老师,我错了,我错了。。。。
我现在才看清题目说的是找任意一个重复元素,没有说找出全部重复元素。
刚刚那个代码,我粘过去好像是乱的,重新粘一下: public class Test04 { public static void main(String[] args) { int[] arr = {0,3,1,2,5,4}; long start = System.currentTimeMillis(); List repeatNumber = getRepeatNumber1(arr); long end = System.currentTimeMillis(); System.out.println(repeatNumber); System.out.println(end-start); } public static List<Integer> getRepeatNumber1(int[] arr){ List<Integer> list = new ArrayList<>(); //判断数组是否为空 if(arr == null || arr.length == 0){ list.add(-1); return list; } //通过循环遍历数组中的元素 for(int i =0;i<arr.length;){ //判断元素是否合法 if(arr[i] < 0 || arr[i] >= arr.length){ list.add(-1); return list; } if(arr[i] == i){ i++; }else { if(arr[i] == arr[arr[i]]){ if(!list.contains(arr[i])){ list.add(arr[i]); }else { i++; } } else { int temp = arr[i]; arr[i] = arr[arr[i]]; arr[temp] = temp; } } } if(list.size()==0){ list.add(-1); return list; }else { return list; } } public static List<Integer> getRepeatNumber2(int[] arr){ List<Integer> list = new ArrayList(); for (int i = 0;i<arr.length;i++){ for (int j = i+1 ;j<arr.length;j++){ if(arr[i] == arr[j]){ if(!list.contains(arr[i])){ list.add(arr[i]); } break; } } } return list; } }
老师,看完老师的讲解思路我有个问题:
题目说的是某些元素重复,而且重复几次也不知道,老师的这个算法可以解决只有一个重复元素的情况,但是如果是这样一个数组{0,3,2,2,3,3}(这个数组也是满足题目条件的),就会出现如果直接return2,就找不到重复元素3,如果不直接return结束循环,那么arr[1]永远都是2,不满足arr[1]=1,i就没法++;就会一直循环。(这就是我想问的问题,不知道我理解的对不对)。
下面这个是我加了一些东西的,麻烦您帮我看一些,谢谢。
Test04 { (String[] args) { [] arr = {}start = System.()List repeatNumber = (arr)end = System.()System..println(repeatNumber)System..println(end-start)} List<Integer> ([] arr){ List<Integer> list = ArrayList<>()(arr == || arr.== ){ list.add(-)list} (i =i<arr.){ (arr[i] < || arr[i] >= arr.){ list.add(-)list} (arr[i] == i){ i++}{ (arr[i] == arr[arr[i]]){ (!list.contains(arr[i])){ list.add(arr[i])}{ i++} } { temp = arr[i]arr[i] = arr[arr[i]]arr[temp] = temp} } } (list.size()==){ list.add(-)list}{ list} } List<Integer> ([] arr){ List<Integer> list = ArrayList()(i = i<arr.i++){ (j = i+j<arr.j++){ (arr[i] == arr[j]){ (!list.contains(arr[i])){ list.add(arr[i])} } } } list} }
老师,这删除和插入的方法,都是指定下标,都是O(n),不是说有O(1)的方法吗?
哎呀,老师,这就没有了,呜呜。
老师,这算法与数据结构的课程也太少了,好多诸如
二叉树,动态规划都没讲啊。话说,面试一般考几道算法题?
这种是不太麻烦了
这些在哪呀?
我咋没看到有,只讲了前三章?
不是很懂,为什么22的结点的next指向44后,33的结点的next就不再指向44了,33.next没有 = null啊,不是应该还挂在那里吗
删除尾结点的时候,时间复杂度不是o(n)吗
为什么只到了第三章就没有了,和视频说的不一样???
第一章绪论哪里说有十章的啊 后面儿的呢。。。
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637