43、括号生成
递归调用API dfs,然后想明白运行条件,生成n对也就是左右括号都为n个,dfs(int left,int right,String cur) 输入dfs(n,n," "),dfs出口为当left==0&&right==0,就把结果放入res集合中,
优先放入左括号,if(left>0) dfs(left-1,right,cur+"("),只有当前放的左括号大于右括号才能放右括号,就是说剩下的右括号n要大于左括号剩下的值,right>left dfs(left,right-1,cur+")"),
举个例子,当n=2时候,dfs有两种路径,dfs(2,2,"")->dfs(1,2,"(")->dfs(0,2,"(")->dfs(0,1,")")->dfs(0,0,")")也就是(()),第二种是dfs(2,2,"")->dfs(1,2,"(")->dfs(1,1,")")->dfs(0,1,"(")->dfs(0,0,")")也就是()(),明白这个例子上面的也就明白了
44、字符串转换整数
该题还是比较简单的,根据题意进行模拟,分类讨论就可以了
首部有空格就去掉,判断符号位,遇到首个非数字时候就停下然后返回结果,数字字符就减去0的ASCII码,每次拼接乘以10,然后提前判断是否越界,最后返回结果即可
45、x的平方根
采用二分法,left=0,right=x,当左右指针差大于1就进入循环,mid=(left+right)/2;如果x/mid<mid right=mid,否则left=mid,缩小区间,最后left就是答案