首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java 算法题 - 面试中常见的位操作算法题

这里我们以 ArrayList 为例子,进行解答,思路大概如下 遍历数组,使用一个 ArrayList 记录当前只出现了一次的值。...若当前遍历的值,在 ArrayList 中已经出现,则移除该值,继续遍历。 最后剩下的两个值,即为所求。 于是我们可以快速写出以下的代码。...[题目描述] 给你1-1000个连续自然数,然后从中随机去掉两个,再打乱顺序,要求只遍历一次,求出被去掉的两个数。...将这个数组与 0-1000 这 n 个连续自然数进行异或,得到这两个去掉的数的异或值 再找出这个异或值第 1 位为 1 的位数,标记为 N 在遍历这个数组,根据第 N 位是否为 1,分为两组进行异或 这种解法需要遍历数组两次...假设输入中没有single number,那么输入中的每个数字都重复出现了数字,也就是说,对这32位中的每一位i而言,所有的输入加起来之后,第i位一定是3的倍数。

73730
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    常见面试题六之java系列

    做Android开发最重要的是要有一个很好的java基础。所以在我们的面试过程中也会被经常问到有关java的问题,其实在小编看来,如果java基础不好,那开发起Android来,怎一个累字了得。...Set:不包含重复元素的Collection。 List:有顺序的collection,并且可以包含重复元素。 Map:可以把键(key)映射到值(value)的对象,键不能重复。...但是,他们有以下不同点: HashMap允许键和值是null,而Hashtable不允许键或者值是null。 Hashtable是同步的,而HashMap不是。...HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。 一般认为Hashtable是一个遗留的类。...ArrayList和LinkedList有什么区别? ArrayList和LinkedList都实现了List接口,他们有以下的不同点: ArrayList是基于索引的数据接口,它的底层是数组。

    57360

    android性能优化

    性能低下的现象 游戏:界面很卡,FPS低 搜索性能差 服务器响应速度慢 OS:界面无响应 性能低下的后果:降低用户体验 用户流失 项目失败 引发灾难 … 容易引发性能问题的点 硬件 IO操作 数据库 网络...定义初始大小   如果只是查找单个字符的话用charat代替startswith 在字符串相加的时候使用 charat()代替startswith() 如果该字符串只有一个字符的话   对于 boolean 值避免不必要的等式判断...本身的Training文档也提供给我们很多可参考的内容,以下仅枚举一些KeyPoint,当然,有的内容是与上面的策略是重复的。...使用ListView、GridView的View缓存 使用Message自身的缓存,避免重复创建Message实例 线程池 数据池(可参考Message Pool的实现方式) …… 数据库优化 SQL...在我所做的程序中,主要的优化手段是: 程序逻辑简化:分析代码,去掉冗余逻辑 数据结构的优化:对集合类的灵活使用,特别是HashMap的使用,极大的提高查找性能。

    78850

    怎样去掉list里重复的数据(多种方法)

    如何去掉list里重复的数据 去掉list重复的数据,目前总结的以下三种方法,分别是采用set集合来做、两层循环不用任何方法来做,以及一层循环采用contains()方法来做,如下: 我在这里用Integer...类型的list进行展示 方法1: /** * @author 程龙 *用双重循环去掉重复,不用任何方法,也不用那个:外层 循环从0到长度-1,后面那个相反的那个 */ public static List...list,那么我循环你给我的带重复数据的list,只有满足我新的list里不包含重复list里的值的时候,我再把获取的原list的值放的我新的list里, * 也就是如果我的新的list有了值,那么我就不向像新的里面添加值了...,我要用set来去掉重复 Set set=new HashSet(list); System.out.println(set);//这里的set里的值已经是去掉了重复的了...); list.addAll(set);//将set集合的值放入到list里,因为set里是没有重复的了,这个时候list也就没有重复的了 System.out.println(list); } }

    1.5K20

    Android面试题集合

    对象Object读写的是哪两个流 反射,求字段的值和方法名 Socket编程的步骤 什么是Java序列化 简述题(五) 常见集合及区别 ArrayList和Vector区别,HashMap和HashTable...区别 ArrayList和LinkedList的区别 List, Set, Map是否继承自Collection接口?...编程算法题 冒泡排序 求素数 单例模式——写一个Singleton出来 二叉树遍历 最长不重复子串(最长重复子串) 有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息...,要求效率尽可能高 二叉查找树的删除操作,手写代码 二分查找,手写代码 有海量条 url,其中不重复的有300万条,现在希望挑选出重复出现次数最高的 url,要求效率尽可能的高 一篇英语文章,去掉字符只留下...k个,如何去掉才能使这k个字符字典序最小 弗洛伊德算法和 Dijkstra算法的区别?

    82010

    Java面试题:Java中的集合及其继承关系

    List的特征是其元素以线性方式存储,集合中可以存放重复对象。 ArrayList() : 代表长度可以改变得数组。可以对元素进行随机的访问,向ArrayList()中插入与删除元素的速度慢。...ArrayList和Vector的迭代器实现都是fail-fast的。 ArrayList和Vector两者允许null值,也可以使用索引值对元素进行随机访问。...12、HashSet和HashMap区别 HashSet实现了Set接口,它不允许集合中有重复的值。它存储的是对象 HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许重复的键。...poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败的时候会返回空,但是 remove() 失败的时候会抛出异常。...ArrayMap是Android SDK中提供的,非Android开发者可以略过。 ArrayMap是用两个数组来模拟map,更少的内存占用空间,更高的效率。

    1.3K00

    Android动画分析

    android:interpolator 表示动画集合所采用的插值器,插值器影响动画速度,比如非匀速动画就需要通过插值器来控制动画的播放过程。...android:shareInterpolator表示集合中的动画是否和集合共享同一个插值器,如果集合不指定插值器,那么子动画就需要单独指定所需的插值器或默认值。...android:valueFrom   --------变化开始值 android:valueTo ------------变化结束值 android:valueType ------...------重复次数,-1表示无限重复,默认为-1 android:repeatMode 重复模式,前提是android:repeatCount为-1 ,它有两种值:”reverse”和”repeat...onAnimationCancel(Animator animation); //动画取消       void onAnimationRepeat(Animator animation); //动画重复播放

    90570

    Android动画深入分析

    android:interpolator 表示动画集合所采用的插值器,插值器影响动画速度,比如非匀速动画就需要通过插值器来控制动画的播放过程。...android:shareInterpolator表示集合中的动画是否和集合共享同一个插值器,如果集合不指定插值器,那么子动画就需要单独指定所需的插值器或默认值。...android:valueFrom   --------变化开始值 android:valueTo ------------变化结束值 android:valueType -------变化值类型...android:duration ---------持续时间 android:startOffset ---------动画开始延迟时间 android:repeatCount --------重复次数...,-1表示无限重复,默认为-1 android:repeatMode 重复模式,前提是android:repeatCount为-1 ,它有两种值:”reverse”和”repeat”,分别表示反向和顺序方向

    848100

    Java核心(四)面试必备—你不知道的数据集合

    1.2 ArrayList ArrayList 是应用更加广泛的动态数组,它本身不是线程安全的,所以性能要好很多。...看源代码可知: public HashSet() { map = new HashMap(); } HashSet也并不是线程安全的,HashSet用于存储无序(存入和取出的顺序不一定相同)元素,值也不能重复...HashSet可以去除重复的值,如下代码: public static void main(String[] args) { Set set = new HashSet();...set.add("banana"); System.out.println(set); } 编译器不会报错,执行的结果为:[orange, banana, apple, grape],去掉了重复的...后者操作失败不会报错,前者会抛出异常; element() / peek() 都为查询第一个元素,不会删除集合,但element()查询失败会抛出异常,peek()不会。

    42820

    安卓开发_九宫格布局

    迭代显示”这个概念,这个好比布局嵌套,我们在一个大布局里面重复的放入一些布局相同的小布局, 那些重复的部分是由图片和文字组成的小控件,图片在上方,文字在下方,之后我们只需要把这些小控件迭代进入主容器里即可...,一个列对象,对应一个 “可重复的子项”,这个子项就是我们 的图片项和图片下方文字显示的部分。...如果不指定这个宽度的话,默认是每行(展示的行,界面)仅仅只显示一个 “可重复的子项”,而当指定了宽度时,本文指定为90dp,如果每行实际行尺寸大于90,他就会继续将下一个的“可重复的子项”,放置在本行。...numColumns属性,指定一个自动填充的值,指示了自动填充行。 然后是一个布局,放重复显示的小布局 1 ArrayList作为数据源,再构建SimpleAdapter 作为数据适配器,为gridView指定适配器对象。

    99730

    Android开发(2) - 九宫格的实现

    3.迭代,或者说重复的将各项 插入(放入)到容器内。 具体怎么实现。...,一个列对象,对应一个 “可重复的子项”,这个子项就是我们 的图片项和图片下方文字显示的部分。...如果不指定这个宽度的话,默认是每行(展示的行,界面)仅仅只显示一个 “可重复的子项”,而当指定了宽度时,本文指定为90dp,如果每行实际行尺寸大于90,他就会继续将下一个的“可重复的子项”,放置在本行。...numColumns属性,指定一个自动填充的值,指示了自动填充行。 2。...指定“可重复的子项”,就是需要迭代显示的部分 新建一个布局文件layout_gridview_item.xml android:id="@+id/relativeLayout1

    89700

    Android 列表视频

    组件布局 正常的列表视频在视频加载完成之前肯定是要显示图片,视频加载好后在播放视频,ijk中没有发现视频有缩略图的选项,所以布局使用一个帧布局,用张图片把VideoView盖住,当视频加载好后再把图片去掉..." android:layout_height="wrap_content"> <com.app.widget.live.VideoView android:id="@...+id/videoView" android:layout_width="match_parent" android:layout_height="match_parent...holder复用的时候重新init数据,走到这发现videoView为空,或者url为空的时候下面就不走了,这时候视频是没法加载的,展示出来的就是一个黑屏,因为这个holder复用的前面的,前面的已经把图片去掉了...还有一个haveVideo的bool值判断,也是复用的问题,可以看看前面的注释 本地缓存 ijk每次播放视都回去网络重新加载,如果视频比较大的话加载消耗也比较大,这里可以使用HttpProxyCacheServer

    93730

    深入Java源码解析容器类List、Set、Map

    虽然Android是对Java的进一步封装(SDK),但了解Java,可以让我们更加清楚的了解Android的实现原理,这就和我们去看Framework层的代码是一个道理。...ArrayList不是synchronized的。 然后我们来简单看下ArrayList源码实现。这里只写部分源码分析。...其实就是直接使用System.arraycopy把需要删除index后面的都往前移一位然后再把最后一个去掉。 PS:终于发现以前学习的数据结构用到用场了。O。...总结 List实现 使用场景 数据结构 ArrayList 数组形式访问List链式集合数据,元素可重复,访问元素较快 数组 LinkedList 链表方式的List链式集合,元素可重复,元素的插入删除较快...上面代码中看出先根据hash值和数组长度作且运算得出下标索引。如果存在判断hash值是否完全一致,如果不完全一致则next链表向下找一致的hash值。 ?

    99430
    领券