算法
第一视角丶
终身学习者
展开
-
c++ 反转链表(双指针或栈)
方法一栈 ListNode* reverseList(ListNode* head) { if(head == nullptr) return nullptr; stack<ListNode*> q; ListNode result(0); ListNode *cur = &result; ...原创 2020-03-04 23:18:21 · 678 阅读 · 0 评论 -
c++二分查找详解
对于一个有序数组,我们可以进行,二分查找,时间复杂度为O(log2)主要问题1.中位数的查找:mid = (left + right) / 2;当left和right差值为1时,mid就不再更新,因为两个相邻的数相加必然是奇数,然而计算机中的整数除法会舍弃小数部分。2.结束循环的条件一、每次使mid必然移动一个,若要使mid改变,必然mid位置的值不等于目标值,所以直接使lef...原创 2020-02-29 21:11:47 · 429 阅读 · 0 评论 -
c++二叉树最大深度
递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */...原创 2020-02-02 15:08:05 · 231 阅读 · 0 评论 -
爬楼梯问题
S(n) = S(n-1) + S(n-2) + S(n-3);原创 2020-01-06 12:26:12 · 264 阅读 · 0 评论 -
一个数组有 N 个元素,求连续子数组的最大和
题目:一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。输出描述:所有连续子数组中和最大的值。示例1:输入3 -1 2 1输出3...原创 2019-11-11 20:19:41 · 1745 阅读 · 2 评论