草庐IT

每日签到

全部标签

每日算法之二叉树中和为某一值的路径(三)

JZ84二叉树中和为某一值的路径(三)题目给定一个二叉树root和一个整数值sum,求该树有多少路径的的节点值之和等于sum。1.该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点2.总节点数目为n3.保证最后返回的路径个数在整形范围内(即路径个数小于231-1)方法非递归层次遍历思路算法实现既然要找所有路径上节点和等于目标值的路径个数,那我们肯定先找这样的路径起点啊,但是我们不知道起点究竟在哪里,而且任意节点都有可能是起点,那我们就前序遍历二叉树的所有节点,每个节点都可以作为一次起点,即子树的根节点。具体做法:step1:每次将原树中遇到的节点作为子树

每日算法之二叉树中和为某一值的路径(三)

JZ84二叉树中和为某一值的路径(三)题目给定一个二叉树root和一个整数值sum,求该树有多少路径的的节点值之和等于sum。1.该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点2.总节点数目为n3.保证最后返回的路径个数在整形范围内(即路径个数小于231-1)方法非递归层次遍历思路算法实现既然要找所有路径上节点和等于目标值的路径个数,那我们肯定先找这样的路径起点啊,但是我们不知道起点究竟在哪里,而且任意节点都有可能是起点,那我们就前序遍历二叉树的所有节点,每个节点都可以作为一次起点,即子树的根节点。具体做法:step1:每次将原树中遇到的节点作为子树

每日算法之连续子数组的最大和(二)

JZ85连续子数组的最大和(二)题目输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,找到一个具有最大和的连续子数组。1.子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组2.如果存在多个最大和的连续子数组,那么返回其中长度最长的,该题数据保证这个最长的只存在一个3.该题定义的子数组的最小长度为1,不存在为空的子数组,即不存在[]是某个数组的子数组4.返回的数组不计入空间复杂度计算方法动态规划思路算法实现既然是连续子数组,如果我们拿到了当前的和,对于后面一个即将加入的元素,如果加上他这一串会变得更大,我

每日算法之连续子数组的最大和(二)

JZ85连续子数组的最大和(二)题目输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,找到一个具有最大和的连续子数组。1.子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组2.如果存在多个最大和的连续子数组,那么返回其中长度最长的,该题数据保证这个最长的只存在一个3.该题定义的子数组的最小长度为1,不存在为空的子数组,即不存在[]是某个数组的子数组4.返回的数组不计入空间复杂度计算方法动态规划思路算法实现既然是连续子数组,如果我们拿到了当前的和,对于后面一个即将加入的元素,如果加上他这一串会变得更大,我

每日算法之在二叉树中找到两个节点的最近公共祖先

JZ86在二叉树中找到两个节点的最近公共祖先题目给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值o1和o2,请找到o1和o2的最近公共祖先节点。注:本题保证二叉树中每个节点的val值均不相同。方法BFS,非递归方法思路算法实现看到6和7公共祖先有5和3,但最近的是5。我们只要往上找,找到他们第一个相同的公共祖先节点即可,但怎么找到每个节点的父节点呢,我们只需要把每个节点都遍历一遍,然后顺便记录他们的父节点存储在Map中。我们先找到其中的一条路径,比如6→5→3,然后在另一个节点往上找,由于7不在那条路径上,我们找7的父节点是2,2也不在那条路径上,我们接着往上找,2的父节点是5,

每日算法之在二叉树中找到两个节点的最近公共祖先

JZ86在二叉树中找到两个节点的最近公共祖先题目给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值o1和o2,请找到o1和o2的最近公共祖先节点。注:本题保证二叉树中每个节点的val值均不相同。方法BFS,非递归方法思路算法实现看到6和7公共祖先有5和3,但最近的是5。我们只要往上找,找到他们第一个相同的公共祖先节点即可,但怎么找到每个节点的父节点呢,我们只需要把每个节点都遍历一遍,然后顺便记录他们的父节点存储在Map中。我们先找到其中的一条路径,比如6→5→3,然后在另一个节点往上找,由于7不在那条路径上,我们找7的父节点是2,2也不在那条路径上,我们接着往上找,2的父节点是5,

每日算法之14. 最长公共前缀

14.最长公共前缀题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。方法暴力算法先判断字符串数组是否有为空,为空直接返回空令第一个字符串作为基准进行比较设置一个长度,作为最后最长公共前缀的长度循环判断,选取最小长度代码packageeasy.最长公共前缀14;classSolution{publicStringlongestCommonPrefix(String[]strs){//如果为空,直接返回空if("".equals(strs[0]))return"";//第一个作为基准进行比较Strings=strs[0];//记录最长公共前缀的长度intl

每日算法之14. 最长公共前缀

14.最长公共前缀题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。方法暴力算法先判断字符串数组是否有为空,为空直接返回空令第一个字符串作为基准进行比较设置一个长度,作为最后最长公共前缀的长度循环判断,选取最小长度代码packageeasy.最长公共前缀14;classSolution{publicStringlongestCommonPrefix(String[]strs){//如果为空,直接返回空if("".equals(strs[0]))return"";//第一个作为基准进行比较Strings=strs[0];//记录最长公共前缀的长度intl

每日一考-9.11

ArrayList和LinkedList区别3简说arraylist基于数组,需要连续内存随机访问快(指根据下标访问)尾部插入、删除性能可以,其它部分插入、删除都会移动数据,因此性能会低可以利用cpu缓存,局部性原理linkedlist基于双向链表,无需连续内存随机访问慢(要沿着链表遍历)头尾插入删除性能高占用内存多细说由于arraylist底层是数组,所以元素必须连续存储,当要进行随机查找,其实是根据arraylist连续存储中的下标查找,这操作速度很快。由于linkedlist底层是双向链表,所以存储是无序的,占用内存多(大约同样存储量,占用内存是arraylist的4倍左右),进行随机查

每日一考-9.11

ArrayList和LinkedList区别3简说arraylist基于数组,需要连续内存随机访问快(指根据下标访问)尾部插入、删除性能可以,其它部分插入、删除都会移动数据,因此性能会低可以利用cpu缓存,局部性原理linkedlist基于双向链表,无需连续内存随机访问慢(要沿着链表遍历)头尾插入删除性能高占用内存多细说由于arraylist底层是数组,所以元素必须连续存储,当要进行随机查找,其实是根据arraylist连续存储中的下标查找,这操作速度很快。由于linkedlist底层是双向链表,所以存储是无序的,占用内存多(大约同样存储量,占用内存是arraylist的4倍左右),进行随机查