![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
q123_xi
FIGHTING!
展开
-
C++实现 LeetCode-2.Add Two Numbers
思路:建立一个新链表,把输入的两个链表从左往右,每个节点相加,将和作为新节点添加至新链表后面,注意进位,最高位进位需要单独处理。方法一:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x...原创 2018-12-12 17:42:37 · 197 阅读 · 0 评论 -
C++实现 LeetCode-41. First Missing Positive
思路:题目要求时间复杂度为O(n),空间复杂度为常数。开始的思路为先对数组进行排序,再查找第一个丢失的整数,但排序的平均时间复杂度最小为nlogn,不能满足题目要求。 可以让数组下标作为标记,在num[i]中存放值为i+1的元素,把数字放在对应的下标下,利用已有的空间,进行交换,这样进行一次循环后正整数i就换到了i-1对应的元素中(特殊情况:数组为空、值为负、丢失的最小正数为num....原创 2018-12-13 17:41:27 · 114 阅读 · 0 评论 -
C++实现 LeetCode-1.Two Sum
方法一:Brute Forceclass Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> arr; if(nums.size() <= 1) return a...原创 2018-12-10 18:26:07 · 202 阅读 · 0 评论 -
C++实现 LeetCode-70. Climbing Stairs
方法一:递归(缺点:Time Limit Exceeded)思路:同fibonacci算法,典型的动态规划问题。1.定义子问题:vec[i]表示跳到第i步可行的不同方式数目。2.当前子问题vec[i]与前面子问题的关系:如果是用两步跳到当前(第i步),因为这两步已经确定,所以只有vec[i-2]种方法,即vec[i]=vec[i-2];如果使用一步跳到当前,因为这一步已经确定,所以...原创 2018-12-17 11:54:19 · 150 阅读 · 0 评论 -
C++实现 LeetCode-125. Valid Palindrome
判断字符串是否为有效回文(只考虑字母和数字)。思路:用两个变量,一个指向头部一个指向尾部,分别从 字符串两端遍历,遇到非字母或数字就跳过,若遍历完字符串首尾字符都相同则返回true,否则返回false。注意:空字符串返回true;对大小写不敏感,用toupper()或tolower();跳过非字母、非数字用isalnum()。补充知识点:if语句与while(包括while{判...原创 2019-01-04 14:52:50 · 180 阅读 · 0 评论 -
C++实现 LeetCode-15. 3Sum
思路:#include <iostream>#include <vector>#include <algorithm>using namespace std;class Solution{ public: vector<vector<int> > threeSum(vector<int>&...原创 2019-05-10 15:31:17 · 75 阅读 · 0 评论