二维区域和检索-矩阵不可变
二维区域和检索-矩阵不可变 该题目和一维不同的在于多了一列,那么我们应该最开始的想法就是压缩成一维不就行了,即对每行进行行求和,然后计算是则遍历行计算即可,但是我们会发现就是在计算中还是有遍历,因为不是特别好,所以该改进就是不压缩,而是合理利用行列特性,找行列关系如同一维找行关系一样,此时每一点就为以此为右下角的矩阵求和的值。第一个不展示,这里只展示第二种算法。
12345678910111213141516171819202122232425262728293031323334class NumMatrix { public int[][] mat; public NumMatrix(int[][] matrix) { int m = matrix.length; int n = matrix[0].length; mat = new int[m][n]; for(int i = 0;i < m ;i++){ for(int j = 0 ...
动态
久积山水形,路远脚更长。任何困难都是可以解决的,最主要的是开始去做,一步一步来。
动态
我发现我不能闲着,得给自己找事情干,无论什么,不能放空自己太久,否则我会干其他不好的事情,这点要注意了,需要有意识给自己大脑东西。
区域和检索-数组不可变
区域和检索-数组不可变 该题目最简单想的一定是存储数组,然后每次调用算法时,遍历相加即可,但是有一个问题,缺少对计算结果的记录,导致每次都得重新计算,这会降低效率,所以改进便是通过将每个索引的前缀和计算保存,这样就不需要每次都计算求和,而是进行索引和相减即可,这样通过一次求和记录,使得未来调用不用重复计算求和,降低了时间复杂度。
12345678910111213141516171819202122232425262728293031class NumArray { public int [] arr; public NumArray(int[] nums) { arr = new int[nums.length]; for(int i =0;i<nums.length;i++){ if(i==0){ arr[i] = nums[i]; }else{ arr ...
《重生》
重生电影给我的感觉是剧情紧凑,但是这种反转的类似情节是有的,类似消失的她,但是既有剧情又有打斗情节,我认为是一个不错的暑期档电影。 这里我着重说一下慢镜头与快镜头,两者各有利弊,慢镜头可以清晰、充实地描述情节,能够清楚表明人物的实力,但是缺点就是过多的细节会使电影变得冗余、使人劳累甚至感觉枯燥,快镜头则会使剧情紧凑,同时能够令人感觉轻松愉快,而且可以刺激人的视觉神经,从而产生热血感,但是过多的快镜头会使电影空虚而又虚无,无法让人感觉充实,留下不了深刻的印象,合理运用快慢,不仅可以充分展示人物或者动作,而且还能够提升电影质量以及压迫感。 首先,扮演阶段,这里一个重要的一点是我们能不能有定力,在金钱、色、权面前,我们真的可以坐得住吗?这是我们最重要的定力,不忘本、不忘志需要不仅仅的是思想还有觉悟,而这些的强弱有依赖于你自己的渴望深度,如果一个人死都不怕了,那么可以说他就已经放弃了任何物质,而是专注于自己想要完成的事物。电影主角确实这样,但是现实中我们能否坚守呢? 然后,就是危险意识,生于忧患,死于安乐 ...
生命周期
生命周期 这个官方文档的解法更好,更巧妙,而我的一方面另开了空间,同时我判断也比较复杂,不太支持用我的。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106public void gameOfLife(int[][] board) { int m = board.length; int n = board[0].length; int[][] flag = new int[m][n]; int r; int c; int count; for(int i = 0;i<m;i++){ ...
《逆行人生》
《逆行人生》这部电影描述的不是世界上的大部分人,因为我认为世界上的大部分人可能过着平静的生活,但是不代表描述的不是少部分人的生活,因为世界无奇不有,我们不能全部了解这个世界到底有多少事情发生,有什么样的事情发生,电影是艺术,它不仅仅反应社会现象,它还会掺杂着艺术成分,所以我们学会欣赏电影的同时,还要抽丝剥茧,发现华丽外表下的内在,电影想表达的极少部分。 我认为我分析电影可能不会想到什么分析什么,这样会很乱,毫无逻辑,我未来可能要开始分阶段分析电影,就是说如同小说一样,将电影根据我的想法分成几个部分,既要单独分析,有联系分析,这样会清晰明了,同时逻辑上也更通顺,描述上也更轻松。需要指出的是,有些电影可能只需要分析几个部分,并不需要如此详细分析,因此,可能有些电影的分析我不会这样干,而是和以前一样就几个部分来说。 基于上述,我将这部电影分为三个大部分,第一个部分为离职,第二个部分工作,第三个部分为尾声,其中第二个部分则细化为找工作阶段、初起阶段、上升阶段、成熟阶段这四个子部分。然后就是对这三个大部分的分析。 &e ...
旋转图像
旋转图像 该算法就是找对应位置,偏数学,大部分算法都得需要数学,数学对于算法来说很重要,不要忽视,更不要将其分开思考。这个题我的想法是分每圈考虑,就如同螺旋矩阵那道题一样,然后进行位置对应。题解给了一个对应关系,但是整体考虑,这个会更好,然后还有一个思路就是将旋转变为翻转,这个也不错。
12345678910111213141516171819202122232425262728public void rotate(int[][] matrix) { if(matrix!=null&&matrix.length!=0){ int top =0; int bottom = matrix.length-1; int left = 0; int right = matrix[0].length-1; int temp1,temp2; int index =0; while(bottom - top&g ...
矩阵置零
矩阵置零 如何达到空间复杂度为O(1)这个没有想到,通过看题解明白了,采用内部矩阵记录,我还是想偏了,我以为用有限个值记录就行了,所以就想不明白不记录全部怎么保证记录正确的,结果发现还是需要足够的值,只不过采用内部矩阵来记录,不新创开辟空间,现在了解了,下次注意。 附我的代码,当然不如题解代码:12345678910111213141516171819202122232425262728293031public void setZeroes(int[][] matrix) { int m = matrix.length; int n = matrix[0].length; HashSet<Integer> row = new HashSet<Integer>(); HashSet<Integer> col = new HashSet<Integer>(); int index = 0; for(int ...
动态
昏月晕天中,孤影对芳歌,漫舞摧地泣,醉笑拭新杯。

