- 博客(6)
- 收藏
- 关注
原创 LeetCode 144—二叉树的前序遍历
递归遍历: 1.对递归基进行讨论 2.左子树进行前序遍历 3.对右子数进行前序遍历 //递归实现 public List<Integer> preorderTraversal(TreeNode root) { if (root == null) { return new ArrayList<>(); } List<Integer> r...
2019-03-27 12:54:13 108
原创 LeetCode 29—两数相除
利用位运算解题 public int divide(int dividend, int divisor) { if(divisor == 0 || (dividend == Integer.MIN_VALUE && divisor == -1)) { return Integer.MIN_VALUE; } int sign = ((dividend...
2019-03-12 10:04:27 89
原创 LeetCode 28—实现strStr()
如果子字符串为空,则返回0 如果子字符串长度大于母字符串长度,则返回-1。 遍历母字符串,我们并不需要遍历整个母字符串,而是遍历到剩下的长度和子字符串相等的位置即可,这样可以提高运算效率。然后对于每一个字符,我们都遍历一遍子字符串,一个一个字符的对应比较,如果对应位置有不等的,则跳出循环,如果一直都没有跳出循环,则说明子字符串出现了,则返回起始位置即可。 public int strStr...
2019-03-07 18:16:08 111
原创 LeetCode 27—移除元素
和26题的思路一样,也是设置两个指针,慢指针i用来保存数值,快指针j用来遍历数组 public int removeElement(int[] nums, int val) { int i=0; for(int j=0;j<nums.length;j++) { if(nums[j]!=val) { nums[i]=nums[j]; i++; ...
2019-03-07 15:48:10 95
原创 LeetCode 24—两两交换链表中的节点
两两合并节点,头结点的两个节点合并后,剩下的又可以转化为两两合并的子问题,所以递归求解即可。 public ListNode swapPairs(ListNode head) { if(head==null||head.next==null) { return head; } ListNode left=head; ListNode...
2019-03-05 16:33:27 83
原创 LeetCode 22—括号生成
只有在我们知道序列仍然保持有效时才添加 '(' or ')'。我们可以通过跟踪到目前为止放置的左括号和右括号的数目来做到这一点, 如果我们还剩一个位置,我们可以开始放一个左括号。 如果它不超过左括号的数量,我们可以放一个右括号。 用open表示左括号的个数,close表示有括号的个数。 public List<String> generateParenthesis(i...
2019-03-04 16:57:58 83
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人