自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(220)
  • 资源 (1)
  • 收藏
  • 关注

原创 给定一个填充非负数的m×n网格,找到一条从左上到右下的路径,这个路径将所有数字的总和最小化。

本题源自leetcode  64-------------------------------------------------------------------思路 : 动态规划1 用一个二维数组dp[i][j]记录到达 i,j 所需要的最小路径和。考虑边界条件。2 优化 :用一个一维数组来记录到达某一列,需要的最小路径和。代码: int minPathS

2017-12-18 11:27:33 2786

原创 给定一个字符串和一个整数k,对字符串开头算起的每2k个字符的前k个字符进行反转。 如果还有少于k个字符,则将其全部撤消。 如果小于2k但大于或等于k个字符,则反转前k个字符,

本题源自leetcode  541-------------------------------------------------------------思路:遍历字符串,跳度为 2 * k.每次反转前k 个字符串。代码:string reverseStr(string s, int k) { for(int i = 0; i < s.length()

2017-12-18 10:51:44 2061

原创 一个只由字母数字字符和破折号组成的字符串S. 该字符串被N个破折号分成N + 1个组。 给定数字K,使得每个组包含完全K个字符,除了第一个组可能少于K

本题源自leetcode  482-----------------------------------------------------思路:从后向前遍历字符串。如果结果字符串的长度 余 K+1 等于 K,则下一个字符是 - 。2 反转结果字符串代码: string licenseKeyFormatting(string S, int K) {

2017-12-18 10:09:12 2177 1

原创 给定一个没有重复的已排序整数数组,返回其范围的摘要。

本题源自leetcode  228----------------------------------------------------------------------------------思路: 遍历数组,如果相邻的连续就记录开始和结尾数字。代码 vector summaryRanges(vector& nums) { vector res;

2017-12-17 11:18:16 589

原创 给出一个列表,将列表向右旋转k个地方,其中k是非负数。

本题源自leetcode  61-----------------------------------------------------------思路:遍历一遍链表统计长度以及找到链表尾节点。2 将链表构造成一个环,然后找到要转换的节点的头结点,断开。代码: ListNode* rotateRight(ListNode* head, int k) {

2017-12-17 10:58:53 525

原创 序列化二叉树的一种方法是使用预序遍历。当我们遇到一个非空节点时,我们记录节点的值 如果它是一个空节点,我们使用一个哨兵值如#记录。

本题源自leetcode  331 ----------------------------------------------------------------------思路: 用出入度来计算。 每个点都有一个入度。如果是非空节点,有俩个出度。最后判断度数为0 则 是一个序列化。2 初始化时候,在字符串结尾加一个逗号,便于处理最后一个字符代码: bool is

2017-12-15 11:11:41 444

原创 给定不同数字的集合,返回所有可能的排列。

本题源自leetcode   46---------------------------------------------------------------------------思路:回溯法1 对数组排序,2定义回溯函数   3   定义递归结束条件,即起始位置大于等于数组大小。 4 每次交换俩个数,递归后在交换回来,保证下次递归。 代码 vector> pe

2017-12-15 09:26:07 957

原创 验证给定的字符串是否为数字。

本题源自leetcode  65思路:1 先去空格,在去除符号2 判断小数点的位数和小数点前面是否有数3 如果是科学技术,则要看e后是否有数代码:bool isNumber(string s) {        int n = s.length();        if(n == 0)            return false;       

2017-12-13 12:14:33 1283

原创 给定一个字符串,你需要颠倒每个单词中的字符顺序,同时仍然保留空白和初始的字顺序。

本题源自leetcode  557--------------------------------------------------思路  将每个单词反转,遇见空格就跳过。代码: string reverseWords(string s) { int n = s.length(); for(int i = 0; i < n; i++){

2017-12-13 11:22:29 3102

原创 求俩个节点的最低公共祖先

本题源自leetcode  235----------------------------------------------------------------递归:代码: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(!root)

2017-12-13 11:16:15 259

原创 查找无限整数序列的第n位1,2,3,4,5,6,7,8,9,10,11,...

本题源自leetcode  400-------------------------------------------------------------思路:1 1-9 有9 位数,10-99 有180 位。因此我们首先找到这个位数是几位数。2 在找到这个数,然后确定这个数的第几位是我们要找的代码:int findNthDigit(int n) {

2017-12-13 11:04:57 8012

原创 给你一个二叉树,其中每个节点都包含一个整数值。查找总和给定值的路径数,路径不需要在根或叶子处开始或结束,但必须向下

本题源自leetcode  437-------------------------------------------------------------思路:递归用一个变量记录当前和。然后递归遍历左子树和右子树。代码: int pathSum(TreeNode* root, int sum) { if(!root) ret

2017-12-13 10:30:57 2062

原创 给定单链表L:L0→L1→...→Ln-1→Ln, 重新排序:L0→Ln→L1→Ln-1→L2→Ln-2→...

本题源自leetcode  143----------------------------------------------------------------------------思路1:用快慢指针找到中节点,然后反转后半部分链表。然后俩个链表交叉插入代码:void reorderList(ListNode* head) { if (!head ||

2017-12-12 11:12:40 3934

原创 给定一组候选号码(C)(没有重复)和一个目标号码(T),找出C中所有候选号码和T相加的唯一组合。

思路:1 动态规划用一个三维数组记录从1 到 target的组合。1 每个数可能出现1 到 target次。遍历从1 到 t 的所有目标2 遍历数组中小于目标 t 的数,3 对于每个候选“c”,我们运行目标t-c的所有组合,从大于或等于c的值开始,以避免重复并仅存储有序组合。思路2  回溯法代码: vector> combinationSum(vector&

2017-12-12 09:31:26 961

原创 假设你有一个随机的队列列表。 每个人用一对整数(h,k)来描述,其中h是人的身高,k是身高大于或等于h的人前面的人数。 编写一个算法来重建队列。

本题源自leetcode  406----------------------------------------------------------------------------思路:1 先按身高排序,如果身高相等再按第二个参数排序。2 根据顺序遍历数组,按第二个元素的值插入结果数组、。代码: vector> reconstructQueue(vector

2017-12-11 11:09:03 1953

原创 机器人位于m x n网格的左上角(在下图中标记为“开始”) 机器人只能随时向下或向右移动。

本题源自leetcode  62思路:动态规划 1 只能向下或者向右走。所以当在i=0 或者 j = 0时  等于1 2 dp[i] [j] = dp[i-1][j] + dp[i][j-1];代码:int uniquePaths(int m, int n) { vector> dp(m,vector(n,1)); for(int

2017-12-11 10:13:59 5830 4

原创 给定一个整数n,返回n!中的尾随零数。

本题源自leetcode  172=------------------------------------------------------------------------------思路:求0来自10。10来自2 x 5,我们需要考虑所有5和2的产品。喜欢4×5 = 20 ...所以,如果我们把所有5的数字作为一个因子,我们将有足够多的偶数与他们配对,得到10的因

2017-12-11 09:37:03 3275 1

原创 给定候选号码(C)和目标号码(T)的集合,找出C中候选号码总和为T的所有唯一组合 C中的每个数字只能在组合中使用一次。

本题源自leetcode 40------------------------------------------------------------思路: 用回溯法1 对数组排序2 递归遍历3 在递归中去重,即用一个pre变量代码 vector> combinationSum2(vector& candidates, int target) {

2017-12-10 11:23:10 1120

原创 给定一个非负数组,求不相邻元素的最大和。

本题源自leetcode  198---------------------------------------------------------思路:1 根据下标的奇偶来,每次取,如果不强这个房子,和抢这个房子的最大值。代码: int rob(vector& nums) { int n = nums.size(); if(n == 0

2017-12-10 11:05:42 1741

原创 给定一个正整数n,找到小于或等于n的非负整数,其二进制表示不包含连续的整数。

本题源自leetcode  600 https://leetcode.com/problems/non-negative-integers-without-consecutive-ones/discuss/=----------------------------------------------------------------------思路: 动态规划  用斐波那契数列

2017-12-10 10:46:12 2768

原创 给定一个只包含大写英文字母的字符串,可以用另一个字母替换字符串中的任何字母最多k次。查找包含所有重复字母的最长子字符串的长度,

本题源自leetcode  424-------------------------------------------------------------------------------------思路: 滑动窗口的思想1 用一个mp 数组来统计各个字符的出现次数。2 从头开始遍历字符串。统计出现次数最多的字符。3 判断当前位置到起始位置减去出现最多的字符,如果大于k

2017-12-10 10:10:34 4191

原创 数独问题

本题源自leetcode   37-------------------------------------------------------------------------------------思路: 1 用回溯法。从(0,0)开始访问数组,试着将1-9填充。代码: void solveSudoku(vector>& board) { i

2017-12-10 09:39:49 161

原创 给定一个二进制数组,找到一个连续的0和1相等的最大子数组。

本题源自leetcode  525--------------------------------------------------------------------思路:1 用一个map 做映射 记录0 1 的数出现次数的差,值为数组下标。初始化mp[0] = -1;代码: int findMaxLength(vector& nums) { int

2017-12-09 11:30:14 2107

原创 给你一个正整数和负整数的数组。 如果指数n是正数,则前进n步。 相反,如果是负数(-n),则向后移动n步。 数组是否有环

本题源自leetcode  457=----------------------------------------------------------------------思路: 仿照链表,用快慢指针代码: bool circularArrayLoop(vector& nums) { bool loop = false; int

2017-12-08 11:27:23 318

原创 给定一个由非负整数和整数m组成的数组,可以将该数组分成m个非空的连续子数组。 写一个算法来最小化这些m个子阵列之间的最大和。

本题源自 leetcode 410---------------------------------------------------------------------------------思路: 1  计算数组的和right,以及最大数left。则子数组的和就在left 和 right之间。然后用二分查找的方法,判断是否可以分为m个数组且和不大于sum。代码:

2017-12-08 10:29:33 2401

原创 给定按升序排序的整数数组,找到给定目标值的开始和结束位置。 如果在数组中找不到目标,则返回[-1,-1]。

本题源自leetcode  34-----------------------------------------------------------思路:用二分查找的思路,首先找出最左边的target,就是当target 2 然后 第一次循环结束后判断 start 等于 target,就是最左边的。然后找最右边的target  一样用 二分查找的方法代码:vector

2017-12-08 09:47:43 2594

原创 给定一个整数数组,1≤a [i]≤n(n =数组的大小),一些元素出现两次,其他出现一次 查找在该数组中出现两次的所有元素

本题源自leetcode  442--------------------------------------------------------------思路: 因为数组中的数 从 1-N,所以可以吧数放i到i-1的位置上。然后遍历数组,如果num[i] != i+1则就是重复的代码:vector findDuplicates(vector& nums) {

2017-12-07 11:31:28 6303

原创 扫雷游戏问题

本题源自leetcode 529---------------------------------------------------------------、你得到一个代表游戏板的二维字符矩阵。'M'表示一个未被揭露的地雷,'E'表示一个未被揭露的空方块,'B'表示一个没有相邻(上面,下面,左边,右边和所有4个对角线)地雷,数字('1'到'8')表示有多少个地雷与这个暴露

2017-12-07 11:19:28 471

原创 有趣的二进制手表问题。

本题源自leetcode  401-----------------------------------------------------------------------思路: 用一个bitset bitset将一个数用10位二进制表示。代码: vector readBinaryWatch(int num) { vector res;

2017-12-07 11:02:59 259

原创 给定两个表示分数的分子和分母的整数,返回字符串格式的分数,如果小数部分重复,则将重复部分括在括号内。

本题源自leetcode   166-------------------------------------------------------------------------------------思路:1 判断除数和被除数是否异号,添加 ‘-’2 求整数部分。添加小数点3 循环求小数部分。余数*10/除数;4 用map 做记录,如果重复则插入括号并结束。代

2017-12-07 10:41:55 1808

原创 给定一个单链表,从链表返回一个随机节点的值。 每个节点必须具有相同的选择概率。 跟进: 如果这个链表非常大,而且它的长度不为人知呢? 你能解决这个问题,而不使用额外的空间?

本题源自leetcode  382;-------------------------------------------------------------思考:用一个随机函数,来做选择。代码: ListNode* head; /** @param head The linked list's head. Note that the head

2017-12-06 11:19:09 838

原创 给定二维空间中四点的坐标,返回四点是否可以构造一个正方形。

本题源自leetcode  593------------------------------------------------------------思路:、用一个有序集合,计算四个点俩俩之间的距离,存入有序集合。如果是正方形,那么有序集合最终只有边和对角线俩个值,且不为0代码: bool validSquare(vector& p1, vector& p2, vector

2017-12-06 11:04:38 1158

原创 构造一个单词查找树,支持以下两个操作的数据结构: 添加和搜索,只包含字母a-z或.。

本题源自 leetcode  211--------------------------------------------------------------------------------思路:代码:class Trie{ public: bool isKey; Trie* children[26]; Trie

2017-12-06 10:41:06 483

原创 给出一个2D板和字典中的单词列表,找到棋盘上的所有单词。每个单词必须由顺序相邻单元格的字母构成。不能重复使用

本题源自leetcode   212-----------------------------------------------------------------------思路:构造一个Trie单词查找树。然后用递归遍历棋盘。找到所有的单词。代码: class Trie{ public: int idx; bool le

2017-12-06 10:15:36 1631

原创 给定一个包含从0,1,2,...,n中取出的n个不同数字的数组,找到数组中缺少的数字。

本题源自leetcode 268-------------------------------------------------------------int missingNumber(vector& nums) { int n = nums.size(); int res = n; for(int i = 0;i < n;i

2017-12-05 12:16:20 2304

原创 给定一个链表,判断是否是回文

本题源自leetcode  234-------------------------------------思路 : 1 找到链表的中间节点。然后反转中间节点后的链表。然后与前半部分比较。代码: bool isPalindrome(ListNode* head) { if(head == NULL || head->next == NULL)

2017-12-05 11:11:49 274

原创 给定一个表示目录的字符串,统计绝对路径文件名长度。

本题源自leetcode  388----------------------------------------------------思路: 1 用一个dp数组记录每一层最大长度。然后遍历字符串,遇到 \t 表明层数, \n表示 新的一层。然后开始统计文件名长度。代码: int lengthLongestPath(string input) {

2017-12-05 10:26:29 364

原创 给定一个非负整数数组,最初定位在数组的第一个索引处。组中的每个元素表示您在该位置的最大跳跃长度。求最小跳数

本题源自leetcode  45-------------------------------------------------------------------------思路:用俩个 变量标识当前的位置  和 下一步能调到最远的位置。代码: int jump(vector& nums) { int n = nums.size();

2017-12-04 11:30:40 5764

原创 求字符串最后一个单词的长度

本题源自leetcode   58------------------------------------------------------------------------------思路:求出字符穿的长度,从尾遍历,如果是空格跳过。找到第一一个单词的长度。代码1:int lengthOfLastWord(string s) { int n = s

2017-12-04 10:52:01 385

原创 给你一个字符串s和一个长度相同的单词列表。 找出s中所有子字符串的起始索引,这些字符串中的每个单词只是一个字符串,没有任何中介字符。

本题源自leetcode  30--------------------------------------------------------------------------------思路: 用两个map做映射、。1 先把字典中的单词做一个map映射。2 遍历字符串。每次都截取字典中单词长度的子串,如果在字典中出现,接着向后遍历,直到在字典中的所有单词都出现。否则就从下

2017-12-04 10:22:00 3135

opengl 消隐算法

OpenGL 实现消隐算法 通过控制键盘来实现图形的平移,可以上下左右移动

2014-11-24

空空如也

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

TA关注的人

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