摘要: 题目链接 暴力 暴力写法直接循环遍历二位数组,查找该值是否存在 时间复杂度为:O(nm) class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { int n = matrix.length; 阅读全文
posted @ 2022-03-21 20:32 Lngstart 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 题目链接 双指针 在题目中要求找出最长的无重复字串,重要的是不重不漏的找到所有的子串,然后找到字串中字符不重复的子串,最后在这些不重复字符的子串中找到长度最长的一个。可以以下标 \(i\) 为尾字符分为一类子串,那么只需要找到一个尽可能小的 \(j\) ,即长度最大, \([j, i]\) 这一段子 阅读全文
posted @ 2022-03-14 11:51 Lngstart 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 模拟加法的过程。 有个链表的技巧,如果再头指针可能发生变化的情况下,最好添加一个头结点,这样对于链表的许多操作不需要特判头指针了。 CPP /** * Definition for singly-linked list. * struct ListNode { * int val; 阅读全文
posted @ 2022-03-13 22:24 Lngstart 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 题目链接 暴力 直接利用双重循环找到当前值和数组中另一个值是否相加等于target 时间复杂度O(n2) class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { for(int i = 0; i < n 阅读全文
posted @ 2022-03-13 20:20 Lngstart 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 二叉树遍历的迭代写法 我们知道二叉树的递归写法非常的简单,因为递归的时候隐式的维护了一个栈。而在迭代的时候也可以采用递归的思想,完全使用一个栈手动模拟递归的过程。 在其中应该特别注意节点进栈的顺序和我们遍历二叉树所需要的顺序之间的关系。 前序遍历 在前序遍历中,二叉树节点的遍历顺序是父 → 左 → 阅读全文
posted @ 2021-08-28 18:32 Lngstart 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 方式一: 最容易想到的是先遍历一遍链表求出链表的长度len, 倒数第k个节点(题目中说下表从1开始)就是顺序的len - k + 1个节点,然后再遍历一遍找到答案就行。 在本题中数据中的k好像没有超出链表长度的范围,所以不用判定就行了。如果题目中k有可能会超出范围,那么是需要特判的。 阅读全文
posted @ 2021-05-12 08:28 Lngstart 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 快慢指针 定义两个指针i,j分别指向数组的初始,i表示数组中奇数要插入的位置,j向后去找奇数,找到就和i这个位置进行交换 class Solution { public int[] exchange(int[] nums) { int i = 0, j = 0;//i表示前面奇数的边 阅读全文
posted @ 2021-05-06 12:40 Lngstart 阅读(29) 评论(0) 推荐(1) 编辑
摘要: 原题链接 题解 单指针扫描 直接从前向后遍历,找到要删除元素的上一个元素,然后直接进行操作就可以了。在我们操作无头结点链表的时候有一个技巧:如果我们的头节点可能变化的情况下,我们可以给它加上一个头结点,这样就可以省去许多的判定,操作更加的方便。 /** * Definition for singly 阅读全文
posted @ 2021-05-06 12:24 Lngstart 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 原题链接 分析 因为我们知道使用位运算符进行计算的时候就是使用的二进制位,所以可以直接行移位操作,然后判定有多少个1 public class Solution { // you need to treat n as an unsigned value public int hammingWeigh 阅读全文
posted @ 2021-04-29 13:40 Lngstart 阅读(39) 评论(0) 推荐(1) 编辑
摘要: 原题链接 分析 有题目可以知道找的是数组中的最小值,最容易想到的方法应该就是直接遍历数组,使用一个变量保存数组中的最小值 class Solution { public int minArray(int[] numbers) { if(numbers.length == 0) return 0; i 阅读全文
posted @ 2021-04-29 13:29 Lngstart 阅读(32) 评论(0) 推荐(1) 编辑