arraylist

剑指offer 丑数

痞子三分冷 提交于 2020-02-06 03:42:18
题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 题目分析 这个题目其实是素数筛的变种问题,只要按顺序拿出所有的丑数就可以了。 java代码 public int GetUglyNumber_Solution ( int index ) { if ( index <= 0 ) { return 0 ; } ArrayList < Integer > arrayList = new ArrayList < > ( ) ; arrayList . add ( 1 ) ; int N = 10000 ; int i2 = 0 ; int i3 = 0 ; int i5 = 0 ; int temp = 0 ; for ( int i = 0 ; i < N ; i ++ ) { int x2 = arrayList . get ( i2 ) ; int x3 = arrayList . get ( i3 ) ; int x5 = arrayList . get ( i5 ) ; temp = Math . min ( x2 * 2 , Math . min ( x3 * 3 , x5 * 5 ) ) ; if ( temp == x2 * 2 )

java --arraylist

不羁岁月 提交于 2020-02-06 01:11:29
ArrayList 的实现: 使用object [] 对象数组 然后对对这个数组进行里面的数据进行增删改查; 在中期间插入时后面的后移 在中间插入时后面的元素前移 当先其中添加的元素大于数组容量时:add(),addAll(); 但容量不够时:扩容到 满足当前需求的组小容量*1.5 这个容量; 其实ArrayList和array没有什么区别只是Arraylist将array 包装了起来: 借鉴: 文献 来源: CSDN 作者: qq_39248664 链接: https://blog.csdn.net/qq_39248664/article/details/104184662

m个数中选n个数进行组合

江枫思渺然 提交于 2020-02-06 00:50:28
public static List<List<Integer>> permute(int[] nums,int n) { List<List<Integer>> list=new ArrayList<> (); List<Integer> list1=new ArrayList<> (); permute(n,0,nums,list,list1); return list; } public static void permute(int len,int cur,int[] nums,List<List<Integer>> list,List<Integer> list1) { if(len==0) { list.add(new ArrayList<>(list1)); return; } for(int i=cur;i<nums.length;i++) { list1.add(nums[i]); permute(len-1,i+1,nums,list,list1); list1.remove(list1.size()-1); } } 来源: CSDN 作者: 兔子兔子我的萝卜呢 链接: https://blog.csdn.net/weixin_43807628/article/details/103841195

C++中实现java的方法(二)

☆樱花仙子☆ 提交于 2020-02-06 00:02:57
C++中实现java的方法(二)-----ArrayList类 本章节主要是在讲解我在C++中实现的第一个java方法即:ArrayList 首先是说明一下:由于参考java方法并不能直接在C++中完美实现,所以本种方法只能最大限度的还原相关方法 简单样例如下 # include <iostream> # include "ArrayList.cpp" int main ( ) { ArrayList < double > list = ArrayList < double > ( ) ; list . add ( 2.5 ) ; list . add ( 3.5 ) ; list . add ( 1 , 4.5 ) ; list . remove ( 2.5 ) ; cout << list . size ( ) << endl ; print ( list ) ; return 0 ; } ArrayList是java中的动态数组,都隶属于List方法下,由于在C++中并没有这种方法,所以我自己将相关方法重写一下,删去了一些多余方法,保留了大部分方法 方法如下: clone()复制当前数组,并返回 isEmpty()返回布尔类型,检测当前是否为空,空返回 true indexOf(Object o)返回第一个检测到的o的位置,如果没有就返回 - 1 add(T t

Java实现简单的斗地主案例

隐身守侯 提交于 2020-02-05 19:57:42
需求分析 准备一副牌,留出底牌后发给三个玩家,且玩家拿到牌后自己排好大小。 设计 1.准备一副牌 1.1:使用HashMap集合存放牌的索引和内容。 1.2:使用一个ArrayList集合存放四个花色。 1.3:使用一个ArrayList集合存放A–K数值。 1.4:使用一个ArrayList集合存放牌的索引,后期发牌用。 2.洗牌,将1.4集合的索引打乱。 3.发牌,准备四个ArrayList集合存放玩家1.2.3发到牌的索引。 4.看牌,将每个玩家的牌的索引拿到后按大小排序,后根据这个索引到1.1的HashMap中获取自己的牌。 代码实现 public class DouDiZhu { public static void main ( String [ ] args ) { //1.准备牌 HashMap < Integer , String > poker = new HashMap < > ( ) ; ArrayList < Integer > pokerIndex = new ArrayList < > ( ) ; List < String > colors = new ArrayList < > ( ) ; colors . add ( "♠" ) ; colors . add ( "♥" ) ; colors . add ( "♦" ) ; colors .

java的LinkedList介绍及常用方法

笑着哭i 提交于 2020-02-05 06:00:45
LinkedList : LinkedList是链表的结构。LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则比ArrayList逊色些。LinkedList访问比较慢我,必须从第一个元素开始遍历。LinkedList是链表的结构。 LinkedList的常用方法 add(E e) 将指定元素添加到此列表的结尾。 add(int index, E element) 在此列表中指定的位置插入指定的元素。 addAll(int index, Collection<? extends E> c) 将指定 collection 中的所有元素从指定位置开始插入此列表。 addFirst(E e) 将指定元素插入此列表的开头。 addLast(E e) 将指定元素添加到此列表的结尾。 clear() 从此列表中移除所有元素。 contains(Object o) 如果此列表包含指定元素,则返回 true。 get(int index) 返回此列表中指定位置处的元素。 indexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。

HashMap之java.util.ConcurrentModificationException问题原因及解决办法

两盒软妹~` 提交于 2020-02-05 06:00:21
Map<Warn,Object> map = new HashMap<>(); for(Entry<Warn,Object> entry : map.entrySet()){ ... ... map.remove(entry.getKey()); ... } 报错:java.util.ConcurrentModificationException异常。 后经查询,在进行迭代时,同时对其进行remove().操作会影响迭代。原因在于: 迭代器的modCount和expectedModCount的值不一致. 没有源码照片了。如果remove()后源码会判断值不一致,然后在hashMap中抛出java.util.ConcurrentModificationException异常. 这个问题需要了解一点:HashMap不是线程安全的,ConcurrentHashMap是线程安全的。 因此,解决这个问题就有一个了简单粗暴的方法,使用ConcurrentHashMap代替HashMap。亲测可用。 另外,还有一个方法,在修改HashMap的上下文进行加锁操作。但是效率太差或者占用内存太高。ConcurrentHashMap效率感觉快赶上不同步的速度。推荐。 List和Map等集合类都存在上述问题,还请注意 -------------------- 以下为补充内容。方便以后学习。为转载文章。

Iterator迭代器解决[为何禁止在foreach内增删]

我们两清 提交于 2020-02-05 03:24:21
迭代器的应用场景: 1、对集合进行增加删除,禁止使用foreach,循环的动态操作 2、倒序遍历 3、遍历循环 步入正题:为何禁止在foreach内进行增删? 先看一下代码: /** * 正例: * Iterator<String> iterator = list.iterator(); * while (iterator.hasNext()) { * String item = iterator.next(); * if (删除元素的条件) { * iterator.remove(); * } * } * 反例: * List<String> list = new ArrayList<String>(); * list.add("1"); * list.add("2"); * for (String item : list) { * if ("1".equals(item)) { * list.remove(item); * } * } */ 这段代码是,在阿里的开发手册中的一段代码。 我们先看下面场景: /** * 场景一:对集合进行删除,增加、for循环 * 错误:这里会报出数据越界异常, * 因为:remove掉一个元素后,整个长度发生变化,所以发生异常 * 改进:采用forList.size()动态 */ List<String> forList = new

《剑指Offer》34. 二叉树中和为某一值的路径

醉酒当歌 提交于 2020-02-05 01:59:40
题目链接 牛客网 题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 解题思路 回溯一定要每一个add都对应一个remove,尤其注意即使是正确路径 public class Solution { public ArrayList < ArrayList < Integer > > FindPath ( TreeNode root , int target ) { ArrayList < ArrayList < Integer > > res = new ArrayList < > ( ) ; ArrayList < Integer > path = new ArrayList < > ( ) ; backtracking ( res , path , target , root ) ; return res ; } private void backtracking ( ArrayList < ArrayList < Integer > > res , ArrayList < Integer > path , int target , TreeNode node ) { if ( node == null |

day13_Collection、泛型

旧时模样 提交于 2020-02-05 01:54:38
Collection集合 集合概述 在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢? 集合: 集合是java中提供的一种容器,可以用来存储多个数据。 集合和数组的区别 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。 学习集合的目标 会使用集合存储数据 会遍历集合,把数据取出来 掌握每种集合的特性 学习集合的方式 学习顶层: 学习顶层的接口/抽象类共性的方法,所有的子类都可以使用 使用底层: 顶层不是抽象类就是接口,无法创建对象使用。我们要使用底层的实现类来创建对象使用。 集合框架 JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作,从而达到灵活应用。集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection 和双列集合 java.util.Map。Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List 和 java.util.Set 。其中, List 的特点是元素有序、元素可重复丶有索引可以使用普通for循环遍历。