![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
陈城南
这个作者很懒,什么都没留下…
展开
-
C++ 实现 maxpooling 计算
C++ implement Maxpooling输入参数:featmap, kernel_size (h, w), stride输出参数:featmap注意实现计算输出 feat 大小,难点: 如果 featmap 的大小(高/宽)无法整除 stride 时,则需要进行 padding;注意 pading 时的填充计算;h,w 不一定相等,stride h,w 也不一定相等;#include <iostream>#include <bits/stdc++.h>原创 2022-03-29 22:28:42 · 2071 阅读 · 0 评论 -
238. Product of Array Except Self
238. Product of Array Except Self要求时间复杂度 O(n),空间复杂度 O(1)大神题解:乘积 = 左边乘积 * 右边乘积 计算左边乘积到 res1[] 计算右边乘积到 res2[] 计算 res1, res2 逐项相乘 化简 2, 3, 4 步,将 3, 4 直接乘在 res1 上实现空间复杂度O(1)class Solution(obje...原创 2020-02-16 18:10:42 · 198 阅读 · 0 评论 -
230. Kth Smallest Element in a BST
230. Kth Smallest Element in a BST二叉搜索树 为空 左子树的值均小于根节点 右子树的值均大于根节点 先序遍历即为从小到大遍历,因此先序遍历的第 k 个元素为 kth Smallest 元素# Definition for a binary tree node.# class TreeNode(object):# def __in...原创 2020-02-13 12:34:19 · 186 阅读 · 0 评论 -
215. Kth Largest Element in an Array
215. Kth Largest Element in an Array快速选择算法,和快排是同一个作者。选择一个轴点,将比其大的放在前面,比其小的放在后面,则中轴点为第 index + 1 小; 判断 index 和 k 的关系,从而决定在前半段寻找第 k 大还是后半段; 细节见代码class Solution(object): def findKthLargest(se...原创 2020-02-13 11:41:36 · 189 阅读 · 0 评论 -
148. Sort List
148. Sort List链表的归并排序,要点:划分:采用快慢指针的方法,将链表划分为两半 递归:递归对链表进行排序 合并:对链表的排序只需更改指针顺序,无须创建新空间# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self....原创 2020-02-12 11:41:58 · 181 阅读 · 0 评论 -
41. First Missing Positive
41. First Missing Positive由于只有 n 个数,因此不用担心 负数和大于 n 的数,所以当遇见负数或大于 n 的数时,将其置为 1,此时列表中数均满足 [1, n]; 对于列表中的数 nums[i],将其作为 index 置 nums[ nums[i] ]为负数,则表示 nums[i] 出现过; 这样处理后,重现遍历,则遇见的正数则表示未出现过; 注意数组大小...原创 2020-02-04 21:11:50 · 256 阅读 · 0 评论 -
36. Valid Sudoku / 37. Sudoku Solver
36. Valid Sudoku如下图对方格进行划分,划分后将 box 的序号与 i, j 对应起来,即 box_index = ( i / 3 ) * 3 + ( j / 3 )如此以来问题便简单了许多,只需要遍历一遍,对每个 i, j 判断是否有效即可,分为位判断和哈希匹配两种,对于详细的位运算暂时还没进一步理解,写了一个比哈希匹配还 low 的强行位运算。class ...原创 2020-02-03 11:47:44 · 216 阅读 · 0 评论 -
49. Group Anagrams
49. Group Anagrams使用哈希表建立 string 和 vector<string> 的关系,对于含有相同字符的字符串,先排序即可知道其是否字母异位。注意使用 unorder_map 加快搜索速度, 使用 auto可提高代码简洁度。class Solution {public: vector<vector<string>>...原创 2020-02-02 12:29:55 · 239 阅读 · 0 评论 -
48. Rotate Image
48. Rotate Image图片顺时针旋转 90°等于转置 + 水平翻转 图片逆时针旋转 90°等于转置 + 垂直翻转 图片旋转 180°等于水平翻转 + 垂直翻转了解了这些,方法明了了起来。class Solution {public: void rotate(vector<vector<int>>& matrix) {...原创 2020-02-02 11:04:52 · 206 阅读 · 0 评论 -
34. Find First and Last Position of Element in Sorted Array 二分搜索
34. Find First and Last Position of Element in Sorted Array关于二分搜索的精华帖按照其方法,分别编写求上下界的二分搜索函数,求得上下界,代码如下:class Solution {private: int left_bound(vector<int>& nums, int target){ ...原创 2020-01-30 13:22:17 · 232 阅读 · 0 评论 -
33. Search in Rotated Sorted Array 非常简单的算法
33. Search in Rotated Sorted Array执行用时 :4 ms, 在所有C++提交中击败了90.71%的用户内存消耗 :9 MB, 在所有C++提交中击败了5.13%的用户从序列是排序的可以看出,此问题为二分搜索BinarySearch的变形,暂且将在题述条件下的序列搜索称为rotatedSearch, 那么问题可以分为:1. 当 tar...原创 2020-01-30 12:08:51 · 339 阅读 · 0 评论 -
30. Substring with Concatenation of All Words
30. Substring with Concatenation of All Words滑动窗口初次尝试失败,会超时,213/230,准备看源码class Solution {private: bool mapEqual(map<string, int> mp1, map<string, int> mp2){ map<stri...原创 2020-01-29 19:32:38 · 227 阅读 · 0 评论 -
29. Divide Two Integers
29. Divide Two Integers题解:1. 先对特殊情况进行讨论:被除数为 0 时,直接返回 0; 除数为 1 时,不可能溢出,直接返回被除数; 除数为 -1 时,可能会溢出,判断并返回被除数/最大值2. 判断被除数和除数的符号是否相同,并将其均置为正数;3. 计算被除数除以除数(算法核心):若被除数小于除数,返回0; 若除数小于被除数,则对除数计数器 +...原创 2020-01-29 12:27:40 · 194 阅读 · 0 评论 -
38. Count and Say
38. Count and Say其实思路很简单,递归调用求出n-1的字符串,然后遍历判断每个数字对应的次数,转化为str输出即可。class Solution {public: string countAndSay(int n) { if(n == 1){ return "1"; } else if(n ...原创 2020-01-28 23:42:24 · 244 阅读 · 0 评论 -
32. Longest Valid Parentheses
32. Longest Valid Parentheses 本题解采用了三种方法,分别为常规动态规划、遍历方向匹配和动态规划栈,其中方法一时间复杂度过大,不能完全AC,会超时,不想看的同志可以忽略;方法二算法简单,容易理解,速度慢,可以AC;方法三为方法二的进阶,稍难一点(其实看了二以后就不太难了),速度较快。常规动态规划:dp[i][j] 表示从 i 到 j 之间有效初始时...原创 2020-01-28 17:44:51 · 236 阅读 · 0 评论 -
31. Next Permutation
31. Next Permutation题解: 此题需要先理解字典序,明确12345的字典序小于12354 ,即越不按从小到大的字典序,排列越大。那么next permutation(下一排列即为 当前面排序都相同,最靠后的满足 nums[i] > nums[i-1] 的元素,让其不不满足nums[i] > nums[i-1] 的同时,i 之后的数字排序字典序最小,...原创 2020-01-28 00:27:29 · 183 阅读 · 0 评论 -
25. Reverse Nodes in k-Group
25. Reverse Nodes in k-Group参考算法:图解k个一组翻转链表 链表的翻转就是将当前节点的下个节点的后继节点置为当前节点。C++代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L...原创 2020-01-25 18:53:36 · 202 阅读 · 0 评论 -
23. Merge k Sorted Lists
23. Merge k Sorted Lists题解:1. 优先级队列法 本打算采用优先级队列的方式,将 struct 中 的 operator操作符重载,然后使用 STL<queue> 的 priority_queue 进行排序,然而 ListNode 是预先定义好的,对于操作符重载还不太熟悉的我,暂时无法解决在函数外如何为 ListNode 的比较重载 oper...原创 2020-01-25 18:15:52 · 208 阅读 · 0 评论 -
22. Generate Parentheses
22. Generate Parentheses题解:1. 回溯法 回溯法需要注意的是,因为结果是多个 string ,因此需要有一个 vector<string> 来存储结果;由于是多个 string ,因此假如利用函数返回值来为当前 string 获取后续 string ,由于 "(" 后面可能接 "(" 和 ")" 两种答案,而返回值只能返回一个,因此不...原创 2020-01-25 18:14:28 · 192 阅读 · 0 评论 -
19. Remove Nth Node From End of List
19. Remove Nth Node From End of List题解: 本题主要思路时一直关注倒数第n个,从指针 1 遍历开始就计算 head 是倒数第几个,当head 是倒数第 n 个时就用指针 2 开始记录第 n 个的位置,指针 1 和 2 同时变化,则指针 2 一直指向倒数第 n 个节点,则当直到指针 1 遍历全部链表,则指针 2 位置为倒数第 n 个。具体细...原创 2020-01-23 09:19:29 · 210 阅读 · 0 评论 -
12. Integer to Roman
12. Integer to Roman题解: 这道题很明显是一道贪心算法的问题,跟找零钱这道题异曲同工之妙,但略有区别,因为它存在 4 = IV 等这种,而不是单纯的 4 = IIII,这是这两道题的最大区别。假如依次分类讨论到底该 IV 还是 IIII 过于麻烦, 有朋友提出了一种思路,很新奇,即将 IV 也看做和 V 一样的单位,此时问题明了了许多,甚是简洁,细节如下:...原创 2020-01-18 13:52:35 · 181 阅读 · 0 评论 -
11. Container With Most Water
11. Container With Most Water题解:暴力搜索法,时间复杂度 O(n²),空间复杂度 O(1)。class Solution {public: int maxArea(vector<int>& height) { int maxV = 0; for(int i = 0; i < height...原创 2020-01-18 11:55:49 · 187 阅读 · 1 评论 -
10. Regular Expression Matching
10. Regular Expression Matching10. Regular Expression Matching题解:方法一:动态规划 dp[i][j]表示 s 的前 i 个元素和 p 的前 j 个元素可以匹配,则状态转移方程为: if ( s[i] == p[j] ) dp[i][j] = dp[i-1][j-1] i...原创 2020-01-17 10:46:08 · 193 阅读 · 0 评论 -
8. String to Integer (atoi) 【有限状态机】
8. String to Integer (atoi)题解: 由于数字限制为 int 32位,为了简化算法采用 long int 64位进行处理,算法采用编译原理中有限状态机的方案,初始状态为0。 0 状态:遇到空格字符时,状态不发生变化,仍为0; 遇到字母字符/非数字字符/非负号时,变为无效状态 4; ...原创 2020-01-16 12:03:44 · 282 阅读 · 0 评论 -
5. Longest Palindromic Substring
5. Longest Palindromic Substring1. 暴力法,遍历回文,时间复杂度O( n³ ),无法AC,通过了43/103个测例class Solution {public: string longestPalindrome(string s) { for(int len = s.length(); len > 0; len--){ ...原创 2020-01-15 22:43:27 · 175 阅读 · 0 评论 -
4. Median of Two Sorted Arrays
4. Median of Two Sorted Arrays题解:解题思路1,寻找第k小数(Kth)结题思路2,暴力求解class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { ...原创 2020-01-15 22:41:53 · 177 阅读 · 0 评论 -
3. Longest Substring Without Repeating Characters
Link here see more.class Solution {public: int lengthOfLongestSubstring(string s) { int strlen = s.length(); int start = 0, len = 0, res; while(start + len <= strlen...原创 2020-01-15 22:40:53 · 179 阅读 · 0 评论 -
1. Add Two Numbers
Link here see more./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {pu...原创 2020-01-15 22:39:39 · 198 阅读 · 0 评论