2 trancybao

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 15w+

【LeetCode】81. 搜索旋转排序数组 II

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,0,1,2,2,5,6]可能变为[2,5,6,0,0,1,2])。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回true,否则返回false。示例1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例2:输入: nums = [2,5,6,0,0,1,2], target = 3输出: false进阶:这是 搜索旋转排序数组的延...

2020-07-15 16:07:13

【LeetCede】剑指 Offer 10- I. 斐波那契数列

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。解法一:普通递归(耗时高)class Solution {public: int ...

2020-07-14 17:38:12

【LeetCode】33. 搜索旋转排序数组

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例2:输入: nums = [4,5,6,7,0,1,2], ta...

2020-06-28 22:44:57

【LeetCode】153. 寻找旋转排序数组中的最小值

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0思路一:暴力法,遍历寻找最小值,稍微优化一下,当nums[i]<nums[i-1]&&nums[i]>nums[i+1]时,即为所寻思路...

2020-06-18 10:58:38

【LeetCode】442. 数组中重复的数据

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]一、使用辅助空间(O(n))public: vector<int> findDuplicates(vector<int>& nums) { vector<

2020-06-17 20:56:56

【LeetCode】16. 最接近的三数之和

给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3<= nums[i]<= 10^3-10^...

2020-06-08 11:18:06

【LeeCode】43.字符串相乘

给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1和num2的长度小于110。num1 和num2 只包含数字0-9。num1 和num2均不以零开头,除非是数字 0 本身。不能使用任何标准库的大数类型(比如...

2020-06-01 09:48:44

【LeetCode】38.外观数列

「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11 被读作"two 1s"("两个一"), 即21。21 被读作"one 2", "one 1"("一个二","一个一"), 即1211。给定一个正整数 n(1 ≤n≤ 30),输出外观数列的第 n 项。...

2020-05-27 22:54:34

【LeetCode】94. 二叉树的中序遍历

一、递归方法:class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector<int> res; vector<int> left; vector<int> right; if (root != NULL) { left = inorderTraversal(root->left); res.insert(res.end(),

2020-05-23 17:06:02

【LeetCode】145. 二叉树的后序遍历

一、递归方法class Solution {public: vector<int> postorderTraversal(TreeNode* root) { vector<int> res; vector<int> left; vector<int> right; if (root != NULL) { left = postorderTraversal(root->left); right = postorderT

2020-05-23 10:37:25

【LeetCode】144.二叉树的前序遍历

1.递归方法class Solution {public: vector<int> preorderTraversal(TreeNode* root) { vector<int> pre; vector<int> left; vector<int> right; if (root != NULL) { pre.push_back(root->val); left=preorderTraversal(root->

2020-05-21 22:37:50

【LeetCode】19. 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: ListNode* remo..

2020-05-20 15:19:45

【LeetCode】6. Z 字形变换

将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int...

2020-05-18 23:13:13

【LeetCode】26. 删除排序数组中的重复项(C++)

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。一、单指针遍历求解(耗时180ms)class Solution {public: int removeDuplicates(vector<int>& nums) { if (nums.empty()) { return 0; } //遍历指针 for

2020-05-17 18:26:20

【LeetCode】8. 字符串转换整数 (atoi)

请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是一个有效整..

2020-05-17 15:31:54

【LeetCode】合并两个有序链表

方法一:穿线法class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (l1 == NULL) { return l2; } if (l2 == NULL) { return l1; } ListNode* p = l1; ListNode* q = l2; ListNode* head ; ListNode* tail ; if (l1-&gt

2020-05-15 22:51:10

【LeetCode】三数之和

给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]难点在于去掉重复答案方法:排序+双指针(C++)#include "pch.h"#include <io...

2020-05-15 22:45:38

【LeetCode】20、有效的括号

给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([)]"输出: false示例5:输入: "{[]}"输出: true bool i...

2020-05-13 11:53:51

【LeetCode】罗马数字转化阿拉伯数字

int romanToInt(string s) { enum Roman { I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000, IV = 4, IX = 9, XL = 40, XC = 90, CD = 400, CM = 900 }; int len = s.length(); int num = 0; Roman* arr = new Roman[len];//转化为枚举存入数组 int r = 0;//记录ar.

2020-05-11 23:05:52

【LeetCode】最长回文子串的四种解题方法

1.暴力法 string longestPalindrome(string s) { if (s == "") { return ""; } int len = s.length(); for (int i = len; i > 0; i--) { for (int begin = 0; begin + i-1 < len; begin++) { string ss = s.substr(begin, i); if (isPal(ss)) {

2020-05-09 21:27:10

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享达人
    分享达人
    成功上传6个资源即可获取