数组,集合常见遗忘宝典

摘要:有时候面对算法的瞬间就会忘掉有什么简便的方法达到目的。First:算法中时间复杂度的大致计算,时间复杂度对算法的影响。Second:如何快速的进行数组集合之间的转换。Third:如何对数组元素用最简洁的方法排序。Fourth:在列表元素全部为0的情况下,怎么不被误判为空。Fifth:如何确定一个数组或者集合中的元素全部相同(或等于0或不等于0)。。。。。等等很多时候就会忘记,因此做个笔记整理下这些知识,同时分享分享。

一、判断数组,列表,集合是否元素全部为0或其他数

List集合:
Set<Integer> set=new HashSet<>();//首先对list去重----set集合的特性
        set.addAll(list);
        if (set.size()==1 && set.equals("0")) {//然后看size的值,接着判断值是否为某个特定的数
            System.out.println(list.toString());
        }
数组:int[] nums={1,3,6,4,3}
List<Integer> list = new ArrayList<Integer> ();//遍历数组元素到集合
        for (int i = 0; i < nums.length; i++) {
            list.add(nums[i]);
        }
//下一步和之前一样---重排---判断

Set<Integer> set=new HashSet<>();
        set.addAll(list);
        if (set.size()==1 && set.equals("0")) {            
            System.out.println(list.toString());
        }

二、数组集合快速转换:

集合到数组:

List<Integer>  list1 = new ArrayList<Integer> ();
list1.toArray();//就可迅速的进行转换

数组到集合:

List<Integer> list = new ArrayList<Integer> ();    
        for (int i = 0; i < nums.length; i++) {
            list.add(nums[i]);
        }
//或者
Arrays.aslist();-------------------但是转换后不能增删,只能用于遍历

三、数组、集合排序:

对于数组,一般的方法大都是进行快速排序,或者冒泡排序什么的,但既然说到简便,我们可以借助Arrays.sort---java自带函数(默认字典序)。
int[] nums = {1,0,7,9,5};
Arrays.sort(nums);

四、在数组元素全部为0的情况下,怎么不被判断为空(null和0)

如果一个集合或者数组元素全部为0,在很多情况下if判断不注意就会将内容判定为null,怎么避免呢?

if (nums == null && nums.length > 1) {};
if(nums.equals(null) && nums.length>1){}

五、判断某个多维集合中是否含有某个集合

List<List<Integer>> list1= new ArrayList<List<Integer>>();
List<Integer> list = new ArrayList<Integer> ();
//这样在添加时就会知道是否重复,可以去掉重复
if ( list1.contains(list)) {
                        list0.add(list1);
                        System.out.println(list1);
                    }

六、时间复杂度的简单计算

一般的就看for循环:

在最坏的情况下,一般一个for循环对于遍历n个数来说就是O(n),两个for循环就是O(n^2),三个O(n^3)。。。。。。

那么时间复杂度对算法有什么影响呢?比如你要遍历100个数,做到全部遍历一次for循环就是100,两次就是100*100,三次就是100*100*100,这只是小数据,当你的n变大到10000呢、100000^3执行次数变成这么多,计算机的承受压力可想而知。

while循环:

举个简单的例子:

int i=1; 
while(i<=n){
 i=i*2
}

假设执行次数是x,条件是n:

i=2^x<=n;
那么:
2^x <= n
所以x <= logn
因此x 从1 到logn,一共执行循环体logn次,所以复杂度是logn

ps:以上均为个人理解,如有错误欢迎指正…^_^

原文地址:https://www.cnblogs.com/wangsr-suc/p/9005416.html