剑指 Offer 55 - II. 平衡二叉树
判断深度得函数。
左右子树得深度差<2 && 左右子树均是平衡二叉树。
剑指 Offer 55 - I. 二叉树的深度
return root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
剑指 Offer 57 - II. 和为s的连续正数序列
采用滑动窗口得方法。
初始化的时候left=right=1;
sum=0;
注意窗口移动的时候sum的改变。
sum < target 时窗口右侧边界r++,sum+=r;
sum > target 时窗口左侧边界l++, sum-=l;
sum == target 之后别忘了继续移动窗口l++, sum-=l;
List<int[]> ans = new ArrayList<>();
return ans.toArray(new int[ans.size()][]);
剑指 Offer 57. 和为s的两个数字
采用双指针
剑指 Offer 58 - I. 翻转单词顺序
trim() 方法用于删除字符串的头尾空白符;
String[] cur = s.trim().split(" ");
之后倒着来,然后再加上空格,在到第一个单词的时候不加空格就好。
剑指 Offer 58 - II. 左旋转字符串
return s.substring(n) + s.substring(0, n);
实例:
索引从零开始;
public class RunoobTest {
public static void main(String args[]) {
String Str = new String("This is text");
System.out.print("返回值 :" );
System.out.println(Str.substring(4) );
System.out.print("返回值 :" );
System.out.println(Str.substring(4, 10) );
}
}
返回值 : is text
返回值 : is te
剑指 Offer 61. 扑克牌中的顺子
【首先对数组进行排序】
简单的理解就是,这个数组中0可以当任何数用,所以当牌不连续的时候,它就可以替补一下,进而达到顺的要求。
举个例子 0 0 1 2 4 5 6,这个数组中,0有两个,所以我们有俩万能替补,接着我们可以发现2-4之间不连续,缺个3,
这样我们就可以把一个0放到哪里当三,0 1 2 0 4 5 6,0代替了3的位置,达到了连续的要求,那啥时候就不行了呢,
当你万能替补0的个数·,没有间隙大的时候,比如你只有一个·0,但是其中数组中有俩连续的数之间差特别大,
达到0的个数不够,比如1-7,中间差了5个数,你就一个0显然不够,所以这就不是顺儿。
剑指 Offer 66. 构建乘积数组
for(int i = 0, cur = 1; i < a.length; i++) {
ans[i] = cur;
cur *= a[i];
}
for(int i = a.length - 1, cur = 1; i > -1; i--) {
ans[i] *= cur;
cur *= a[i];
}
标签:cur,Offer,每日,System,一结,ans,sum,out
From: https://www.cnblogs.com/xtag/p/16758255.html