随笔分类 -  LeetCode

摘要:198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金 阅读全文
posted @ 2019-09-06 09:23 李湘沅 阅读(452) 评论(0) 推荐(0) 编辑
摘要:这个题目真的抽象 题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 中位数需要满足两个条件: 1.左侧和右侧数量相等 2.比 阅读全文
posted @ 2019-09-03 11:58 李湘沅 阅读(236) 评论(0) 推荐(0) 编辑
摘要:题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任 阅读全文
posted @ 2019-08-24 11:01 李湘沅 阅读(328) 评论(0) 推荐(0) 编辑
摘要:和为S的连续正数数列 输出描述: 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 一开始看到这个题没有什么思路,实际上可以利用滑动窗口的思想来解决。 left指向窗口左侧,right指向窗口右侧,一开始窗口不满足要求,因此要使窗口满足和为sum。当窗口和小于 阅读全文
posted @ 2019-08-23 09:44 李湘沅 阅读(178) 评论(0) 推荐(0) 编辑
摘要:编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 剑指OFFER上也有这道题。 思路: 对于某一个丑数来说,它一定是它前面的某个丑数乘以2或3或5得到的,我们要选取 所得到的 所有丑数中最小的一个作为这个位置的新丑数,比如1 2 3 4 5后,6,8,9都是丑数, 阅读全文
posted @ 2019-08-21 09:40 李湘沅 阅读(278) 评论(0) 推荐(0) 编辑
摘要:剑指offer上的一道题: 把数组排成最小的数 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 在类里定义了一个比较函数cmp,但是使用这个比较函数进行sort 阅读全文
posted @ 2019-08-20 09:13 李湘沅 阅读(764) 评论(0) 推荐(0) 编辑
摘要:剑指OFFER上的一道原题,钻了个牛角尖 求二进制中1的个数 问题出现在负数,因为要保持负数的性质,所以对负数进行右移操作后将在首位重新补1,若干次右移后将变为0xFFFFFFFF. 如果要去掉负数的符号位,可以考虑用: int a=-127; a=a^(0x80000000); 0x8000000 阅读全文
posted @ 2019-08-13 08:39 李湘沅 阅读(3183) 评论(0) 推荐(0) 编辑
摘要:在看剑指offer时遇到了这个题目:寻找旋转排序数组中的最小值 II 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 注意数组中可能存在重复的元素。 看到这个题目第一时间就 阅读全文
posted @ 2019-08-12 09:19 李湘沅 阅读(154) 评论(0) 推荐(0) 编辑
摘要:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 示例: 先看这个题目,这个题目不仅仅是一个排序的问题,它的特点在于数组中的元素是固定的3个0,1,2 阅读全文
posted @ 2019-08-07 11:04 李湘沅 阅读(261) 评论(0) 推荐(0) 编辑
摘要:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。 示例: 输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明: 如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。 阅读全文
posted @ 2019-08-07 09:51 李湘沅 阅读(125) 评论(0) 推荐(0) 编辑
摘要:给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board =[['A','B','C','E'],['S','F','C','S'],[ 阅读全文
posted @ 2019-08-05 11:21 李湘沅 阅读(142) 评论(0) 推荐(0) 编辑
摘要:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 首先定义: 对柱形图中的一个矩形i来说,我们计算以heights[i]为 阅读全文
posted @ 2019-08-02 12:05 李湘沅 阅读(257) 评论(0) 推荐(0) 编辑
摘要:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [3,3,5,0,0,3,1,4]输出: 6 思路: 首先,有一点最 阅读全文
posted @ 2019-07-15 11:35 李湘沅 阅读(117) 评论(0) 推荐(0) 编辑
摘要:给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则: 每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明: 如果不存在这样的转换序列,返回一个空列表。所有单词具 阅读全文
posted @ 2019-07-12 14:56 李湘沅 阅读(286) 评论(0) 推荐(0) 编辑
摘要:还是太菜了,第一次做到图的题目,一开始习惯性的想到DFS,后来发现跑出来超时,超时的点在: 1.DFS是一个个的把与之相邻的某个i节点遍历完后在遍历另一个相邻的j节点,而BFS是按层次遍历的,即先遍历完与之相邻的一层,然后再遍历相邻一层的下一层,这样BFS只要找到某个节点符合要求,就一定是最短的(因 阅读全文
posted @ 2019-07-11 11:30 李湘沅 阅读(348) 评论(0) 推荐(1) 编辑
摘要:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回符合要求的最少分割次数。 示例: 输入: "aab"输出: 1解释: 进行一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串 与131题目类似,但是用递归的话在某些测例上会超时,因此考虑使用dp 使用dp,首先考 阅读全文
posted @ 2019-07-09 16:47 李湘沅 阅读(198) 评论(0) 推荐(0) 编辑
摘要:在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。 说 阅读全文
posted @ 2019-07-08 10:06 李湘沅 阅读(178) 评论(0) 推荐(0) 编辑
摘要:Leetcode136: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 时间O(n),空间O(1)的算法实在没想到,满脑子里都是排序或者引入map。 看了下答案巧妙的运 阅读全文
posted @ 2019-07-06 10:37 李湘沅 阅读(148) 评论(0) 推荐(0) 编辑
摘要:直接在leetcode上做的,牛客上把词典wordDict改成了哈希表,懒得改了,牛客上的就没写。 思路: table[i][j]代表从字符串s的i到j位置([i,j])是否能为一个词典中的单词,为1表示可以,为0表示不行。 e.g. 首先初始化table表,即初始化table[0][x],在词典中 阅读全文
posted @ 2019-07-04 15:47 李湘沅 阅读(373) 评论(0) 推荐(0) 编辑
摘要:用递归的话这两个题是很简单的。 在非递归的情况,使用迭代做这个两个题目,两个题目间的联系是很紧密的。 首先是LeetCode144,前序遍历二叉树: 前序遍历的顺序为:根,左,右。 对这个顺序下,很容易想到使用一个栈即可完成遍历,流程有: 1).根节点入栈 2).读取根节点出栈 3).右节点与左节点 阅读全文
posted @ 2019-07-03 11:22 李湘沅 阅读(245) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示