摘要:
题目: 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不 阅读全文
摘要:
class Solution { public void rotate(int[][] matrix) { int n = matrix.length; for (int k = 0; k < n / 2; k++) { for (int i = 0; i < ((n - 2 * k) - 1); i++) { ... 阅读全文
摘要:
题目: 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 解题思路: 阅读全文
摘要:
题目: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 示例: 解题思路: 阅读全文
摘要:
题目: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1: 示例 2 阅读全文
摘要:
题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 解题思路: 设置三个指针,分别指向前后和当前节点。 首先设置创建一个prehead结点,用来返回结果。 接着创建left、mid、right三个结点,交换mid 阅读全文
摘要:
题目: 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。 你可以按任意顺序返回答案。 示例 1: 示例 2: 提示: 解题思路: 阅读全文
摘要:
题目: 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 解题思路: 使用归并将链表两两合并 阅读全文
摘要:
class Solution { public int[] mergeSort(int[] arr){ if(arr.length<2||arr == null) return arr; return MSort(arr,0,arr.length-1); } public int[] MSort(int[] ... 阅读全文
摘要:
题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 说明: 给定的 n 保证是有效的。 解题思路: 使用两个节点,一个是p一个是q。先让p走n步,然后再让p和q同时往前走,当p走到头时,q即是倒数第n+1个节点了。令p.next = p.next.next则删除了倒数 阅读全文