序言

    照见五蕴皆空,度一切苦厄。。。


    碰到一个问题,总是心心念,因为我不信一个问题没有解决之道。。。只是时间,地点,人物不合适,所以导致无法解决。。。接口总比方法多。

复杂度

    依稀记得在某个时刻,有人问,在进行编程的时候,你选择各种数据结构的依据是什么。。。为什么要选择list,而不选择tuple,为何你要选择dict,而不选择一个json,或者自己实现一个class。。。如果是你,你怎么作答???


    最近闲来无事,有一本书买了很久,然而并没有看,因为文绉绉的,理论性太强,看的心烦意乱情迷。。。数据结构与算法。。。


    最近一不小心,又看了一片代码:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

    实现代码如下所示:


public int[] twoSum(int[] nums, int target) {

    for (int i = 0; i < nums.length; i++) {

        for (int j = i + 1; j < nums.length; j++) {

            if (nums[j] == target - nums[i]) {

                return new int[] { i, j };

            }

        }

    }

    throw new IllegalArgumentException("No two sum solution");

}


    不是很懂java,所以只理解其意思,在其中,表达了两层意思:第一种是时间复杂度为O(N**N);第二种是空间复杂度为O(1)。


    复杂度,有多复杂。。。我们生来就是为了和各种复杂度作斗争,太简单的没挑战,太复杂的玩不动。。。所以简单就是美,能将复杂的东西进行简单化,也是相当不错的。


    花了几个小时,沉迷到理论之中。。。差点出不来,忍不住要全部看完。。。


    时间复杂度,就是运行一次需要花费的时间,一般N表示整个数据的长度,是否和数据的长度有关,例如O(N)就是线性关系,所谓的O(1)可以认为是常量关系,简单的理解就是:如何和长度有关,那么就是O(N),例如循环一次,在上面的代码中,循环了两次,所以时间复杂度为O(N**N)。


    空间复杂度,就是运行一次的过程中,占用的存储空间的大小度量,例如在进行一个list操作的时候,那么空间复杂度为O(1),当在进行修改删除操作的时候,可能需要新建一个新的存储空间来存储新的队列,从而空间复杂度为O(N)。


    空间复杂度和时间复杂度,可以作为选择数据类型的评判标准之一。


    对于一种数据结构来说,有各种各样的时间复杂度,对于python的list实现,当你查询一个元素的时候,时间复杂度是O(1),常量时间;但是当你进行加入元素,删除元素的时候,时间复杂度是O(N),对于特例在尾部增加和删除的操作来说,时间复杂度又是O(1)。


    对于一个程序来说,编程语言提供了最基础的类型实现,例如python里面的str,int,float,list,tuple等,在表达一个数据结构的时候,就有各种选择,可以选择不同的方式,而当你选定了数据结构,那么你程序最基本的运行时间就大概已经定型。


    类class,其实也是一种数据结构,基本属性,加上一些方法,方法是对自身的一些操作,所以在类里面,总是会有self,那么为什么有的方法没有self,有的方法都是用cls。。。


    为什么会产生静态方法,所谓的staticmethod。。。辅助方法,当一个类需要一些方法的时候,但是操作的又不是自身,那么就可以使用静态方法,作为一个辅助方法而存在。


    为什么又会有类方法,所谓的classmethod。。。Emmm,只是在一个命名空间之内,可以继承等操作,例如统计这个类创建了多少个。。。

风言风语

     攘外必先安内。。。内乱还未平息,外面的市场已经失去先机。。。眼瞎了解一下。。。


    帮我是情分,不帮我才是本份。。。帮我是因为你的素质高,帮我也是因为看得起我。。。其实所有的道理都相通。


    广告,很多人看东西只看表面。。。所谓的各种滤镜,美颜。。。   太年轻。。。