自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 二叉树的遍历(迭代写法)

前序遍历顺序 根 左 右/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<int>

2020-07-17 21:18:29 264

原创 奇数值单元格的数目

题目代码class Solution {public: int oddCells(int n, int m, vector<vector<int>>& indices) { int r[51] = {0}, c[51] = {0}; for(int i = 0; i < indices.size(); i ++) { r[indices[i][0]] ++;

2020-07-11 17:27:21 135

原创 删除最外层的括号

题目思路因为是删除最外层的括号,所以最外层只有一层,所以先设两个变量L和R分别表示左括号和右括号的数量,把最外层的左括号先算进去,然后开始遍历字符串,因为一直有一个左括号被计算着所以遍历的时候左右括号的数量不相等,所以这时候的括号就算是内部括号了,相等的时候就说明外部括号找到了,重新定义初始变量。代码class Solution {public: string removeOuterParentheses(string S) { string l; int

2020-07-11 16:01:30 366

原创 旅行终点站

题目思路这其实是一个图的问题,paths数组中存储的是有向边,把所有的边放在一个图中会发现终点站只有入度,出度为零,所以通过寻找出度为零的点来确定终点站。代码class Solution {public: string destCity(vector<vector<string>>& paths) { map<string,int> graph; for(auto a : paths) {

2020-07-09 09:02:02 201 1

原创 访问所有点的最小时间

题目思路切比雪夫距离dx = abs(x1 - x0), dy = abs(y1 - y0)如果 dx < dy 先沿对角线移动dx次,再沿竖直移动dy - dx次,总共移动dx + (dy - dx) = dy 次如果 dx = dy 直接沿对角线移动dx次如果dx > dy 先沿对角线移动dy次,再沿水平移动dx - dy次,总共移动dy + (dx - dy) = dx次所有最少的移动次数就是最大的距离之差。代码class Solution {public:

2020-07-08 16:54:13 129

原创 有效的括号

题目思路从先向后遍历字符串,边遍历边匹配,遇见左括号就进栈,遇见有括号就和栈顶元素匹配,如果匹配成功则栈顶元素就出栈,如果匹配不成功就继续遍历。如果最后栈为空则说明匹配成功,否则就说明匹配不成功。代码class Solution {public: bool isValid(string s) { if(s.size() % 2 != 0)//如果字符串不是偶数就说明一定不匹配 { return false; }

2020-07-07 19:38:36 157

原创 将有序数组转换为二叉搜索树

题目代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* sortedArrayToB

2020-07-03 15:52:24 74

原创 反转链表Ⅱ

题目思路建立一个vector容器,遍历链表,把链表中的数值存入到vector容器中,在vector容器中对m和n之间的数据进行反转,最后建立一个新链表存储反转后的vector容器。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *

2020-06-26 15:58:42 109

原创 删除链表中的节点

题目描述思路正常思路是找出要删除节点的上一个节点,然后改变节点的指针。但是题中只给出了要删除的节点,所以要把要删除的节点变为前一个节点,即把要删除的节点的值变为下一个节点的值,然后删除下一个节点。代码/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next; * ListNode(int x) : val(x), next(NULL) {}* };*/cl

2020-06-05 16:13:48 360

原创 相交链表

题目描述思路设置两个指针分别遍历两个单链表,如果单链表被遍历完则指针指向另一个单链表继续遍历。如果两个单链表相交则两个指针走过的路程是相同的,所以一定会在某一个点相交,这个相交的点就是两个单链表的交点。如果不想交则最后两个指针共同指向NULL。(自己把图画一下会更好理解)代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L

2020-06-05 15:52:51 109

原创 环形链表

题目描述思路设置两个指针——一个快指针,一个满指针。这个方法想高中物理上的追击问题。如果链表中有环路,则快指针会和慢指针相遇;如果两个指针不相遇则说明链表中没有环。代码class Solution{ public: bool hasCycle(ListNode *head) { if(head == NULL || head -> next == NULL) return false; ListNode *fast = head -> next;

2020-06-03 17:30:44 95

原创 LeetCode——删除排序链表中的重复元II

题目描述思路双指针算法。建立一个哑结点,使用两个指针,第一个指针从哑结点开始遍历,第二个指针从第一个节点开始遍历。当两个指针的下一个位置中的值不相等是,指针都向后移。如果两个指针的下一个位置的值相等,则第二个指针向后移,直到不相等位置,此时把第一个指针的下一个位置更新到第二个指针的下一个位置就可以把相同数字的节点删掉。代码class Solution {public: ListNode* deleteDuplicates(ListNode* head) { ListNode *d

2020-06-02 10:40:15 85

原创 LeetCode 链表专项

61. 旋转链表题目描述

2020-06-02 09:39:26 139

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除