随笔分类 - LeetCode
摘要:思路 方法一:直接调用split()和parseInt()库方法 class Solution { public int compareVersion(String version1, String version2) { /* 调库方法 */ String[] vs1 = version1.spl
阅读全文
摘要:思路 手撕快速排序。 class Solution { public int[] sortArray(int[] nums) { // 手撕快速排序 int left = 0, right = nums.length-1; quickSort(nums, left, right); return n
阅读全文
摘要:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; }
阅读全文
摘要:思路 方法:二分搜索 class Solution { public int search(int[] nums, int target) { int left, mid, right; left = 0; right = nums.length-1; while(left <= right) {
阅读全文
摘要:思路 方法:层序遍历 保存层序遍历每一层的最后一个数字即可。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right
阅读全文
摘要:思路 方法:动态规划 思路来源: LeetCode官方题解 - 最大正方形 理解 三者取最小+1 1 class Solution { 2 public: 3 int maximalSquare(vector<vector<char>>& matrix) { 4 if (matrix.size()
阅读全文
摘要:思路 方法:用栈模拟 1 class Solution { 2 public: 3 string decodeString(string s) { 4 deque<char> d; 5 6 for(int i = 0; i < s.length(); ++i) { 7 if(s[i] == ']')
阅读全文
摘要:思路 方法:找规律 1 class Solution { 2 public: 3 string maximumBinaryString(string binary) { 4 int n = binary.length(); 5 int firstZeroIndex = -1; 6 for(int i
阅读全文
摘要:思路 方法:暴力模拟 最直观的方法是不断地遍历数组,如果还有糖就一直分,直到没有糖为止。 1 class Solution { 2 public: 3 vector<int> distributeCandies(int candies, int num_people) { 4 vector<int>
阅读全文
摘要:思路 方法:哈希set 找到唯一元素数量的另一种方法是遍历给定 candies 数组的所有元素,并继续将元素放入集合中。通过集合的属性,它将只包含唯一的元素。最后,我们可以计算集合中元素的数量,例如 count。要返回的值将再次由 min(count,n/2) 给出,如前面的方法所述。其中 n 表示
阅读全文
摘要:思路 方法:双指针 令i = 0,循环遍历数组,直到i指向第一个值为0的元素令j = i + 1, 循环遍历数组,直到j指向第一个值非0的元素swap(nums[i],nums[j])重复上述流程,直到i或j大于题中给出的数组长度 1 class Solution { 2 public: 3 voi
阅读全文
摘要:思路 这题和剑指 Offer 29. 顺时针打印矩阵一样。
阅读全文
摘要:思路 方法:首尾双指针 1 class Solution { 2 public: 3 void reverseString(vector<char>& s) { 4 int i = 0, j = s.size()-1; 5 while(i < j) { 6 swap(s[i], s[j]); 7 +
阅读全文
摘要:思路 方法:排序 + 双指针 先排序,之后有序数组,固定一个数,对后面的有序序列进行双指针查找,双指针方法见此题:LeetCode 167. 两数之和 II - 输入有序数组 1 class Solution { 2 public: 3 vector<vector<int>> threeSum(ve
阅读全文
摘要:思路 方法一:哈希表 遍历整棵树,找出所有可能的组合,判断是否存在和为 k 的一对节点。现在在此基础上做一些改进。 如果存在两个元素之和为 k,即 x+y=k,并且已知 x 是树上一个节点的值,则只需判断树上是否存在一个值为 y 的节点,使得 y=k-x。基于这种思想,在树的每个节点上遍历它的两棵子
阅读全文
摘要:思路 方法一:二分查找 在数组中找到两个数,使得它们的和等于目标值,可以首先固定第一个数,然后寻找第二个数,第二个数等于目标值减去第一个数的差。利用数组的有序性质,可以通过二分查找的方法寻找第二个数。为了避免重复寻找,在寻找第二个数时,只在第一个数的右侧寻找。 1 class Solution {
阅读全文