lintcode
DCY7074
你要努力了
展开
-
lintcode---子集(带重复元素和不带重复元素的两种解法)
题目描述: 给定一个含不同整数的集合,返回其所有的子集。注意事项: 子集中的元素排列必须是非降序的,解集必须不包含重复的子集。样例: 如果 S = [1,2,3],有如下的解:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]思路分析(对于没有重复元素): 我们可以先看一个例子[1]、[1,原创 2017-11-20 17:32:07 · 1119 阅读 · 0 评论 -
lintcode--全排列
题目描述: 给定一个数字列表,返回其所有可能的排列。注意假设: 你可以假设没有重复数字。样例: 给出一个列表[1,2,3],其全排列为: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]思路分析: 由于前几天刚做了下一个排列,所以一眼发现下一个排列就是上一个排列的下一个,所以我们只需要原创 2017-11-20 12:57:54 · 817 阅读 · 0 评论 -
寻找第k大的数的方法总结
转自:http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长转载 2017-11-18 13:55:54 · 3191 阅读 · 0 评论 -
lintcode---搜索二维矩阵Ⅱ
题目描述: 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性: 每行中的整数从左到右是排序的。 每一列的整数从上到下是排序的。 在每一行或每一列中没有重复的整数。样例: 考虑下列矩阵:[[1, 3, 5, 7],[2, 4, 7, 8],[3, 5, 9, 10]]给出target = 3,返回 2思路讲解: 对于这道题,最简单的方法就是直接暴力搜索原创 2017-11-18 13:29:57 · 240 阅读 · 0 评论 -
lintcode--上一个排列
题目描述: 给定一个整数数组来表示排列,找出其上一个排列。注意事项: 排列中可能包含重复的整数。样例: 给出排列[1,3,2,3],其上一个排列是[1,2,3,3]给出排列[1,2,3,4],其上一个排列是[4,3,2,1]思路讲解: 跟下一个排列的算法刚刚相反,就是从最后找一个递增序列,然后从其后面找到一个比他小的数,且这个数最接近他。交换这两个数,然后将其后面的数倒序排列。 举个栗子:原创 2017-11-15 15:22:50 · 374 阅读 · 0 评论 -
lintcode---下一个排列
题目描述: 给定一个整数数组来表示排列,找出其之后的一个排列。注意事项: 排列中可能包含重复的整数。样例: 给出排列[1,3,2,3],其下一个排列是[1,3,3,2]给出排列[4,3,2,1],其下一个排列是[1,2,3,4]思路讲解: 我是从例子中找到规律的,例如: 5-2-4-3-1我们发现他的下一个排列是5-3-1-2-4 就是从后往前找到一个递减的 这里是2-4,所以我们只需要原创 2017-11-15 14:38:56 · 217 阅读 · 0 评论 -
lintcode---中序遍历和后序遍历树构造二叉树
题目描述: 根据中序遍历和后序遍历树构造二叉树注意事项: 你可以假设树中不存在相同数值的节点样例: 给出中序遍历:[1,2,3]和后序遍历:[1,3,2]. 返回如下的树:思路跟上一篇一样,唯一的不同是这里是从后序遍历找出根节点,即后序遍历数组的最后一个是根节点。上一篇是从先序遍历找出根节点,即先序遍历数组的第一个是根节点。代码详解:class Solution {public: /原创 2017-11-07 23:07:29 · 221 阅读 · 0 评论 -
lintcode---前序遍历和中序遍历树构造二叉树
题目描述: 根据前序遍历和中序遍历树构造二叉树注意事项: 你可以假设树中不存在相同数值的节点样例: 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树:思路讲解: 由于是先序遍历,所以这个数组得第一个一定是其根节点,然后根据中序遍历可以将根节点得左右节点的内容得到,然后递归调用,就可以将这棵树建立起来。 例如: 前序遍历为1245367 中序遍历为4251637原创 2017-11-07 22:59:27 · 206 阅读 · 0 评论 -
lintcode--最长上升子序列
题目描述: 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明: 最长上升子序列的定义: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的子序列,这种子序列不一定是连续的或者唯一的。 https://en.wikipedia.org/wiki/Longest_increasing_subsequence样例 给出 [5,4,1,2,3],LIS原创 2017-11-07 15:19:08 · 177 阅读 · 0 评论 -
lintcode----最近公共祖先
题目描述: 给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。 最近公共祖先是两个节点的公共的祖先节点且具有最大深度。注意事项: 假设给出的两个节点都在树中存在样例: 对于下面这棵二叉树 LCA(3, 5) = 4LCA(5, 6) = 7LCA(6, 7) = 7思路讲解: 由于我们要求祖先,我的第一想法就是将这两个节点的父亲节点全部找出来,然后对其进行查找,找到其相同的节点原创 2017-11-04 21:15:24 · 189 阅读 · 0 评论 -
lintcode--最小调整代价
题目描述: 给一个整数数组,调整每个数的大小,使得相邻的两个数的差不大于一个给定的整数target,调整每个数的代价为调整前后的差的绝对值,求调整代价之和最小是多少。注意事项: 你可以假设数组中每个整数都是正整数,且小于等于100。样例: 对于数组[1, 4, 2, 3]和target=1,最小的调整方案是调整为[2, 3, 2, 3],调整代价之和是2。返回2。思路讲解: 注意条件中有数组原创 2017-11-03 17:46:52 · 726 阅读 · 0 评论 -
lintcode--删除排序链表中的重复数字
题目描述: 给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。样例: 给出 1->2->3->3->4->4->5->null,返回 1->2->5->null给出 1->1->1->2->3->null,返回 2->3->null思路讲解: 这个题目很容易就理解题目意思,但是实际做起来,不知道从何入手,首先我们的意思就是直接将链表中的重复的元素删除,这样就需要我们记住该节点前原创 2017-11-01 14:59:39 · 324 阅读 · 0 评论 -
一些算法刷题的网站
leetcode http://leetcode.com/careerup http://www.careercup.com/http://hawstein.com/posts/ctci-solutions-contents.htmlglassdoorhttp://www.glassdoor.com/index.htmtopcoderhttp://www.topcoder.com/zojht转载 2017-10-31 14:39:14 · 19876 阅读 · 1 评论 -
lintcode---旋转图形
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-10-23 16:34:18 · 236 阅读 · 0 评论 -
lintcode--乘积最大子序列
题目描述:找出一个序列中乘积最大的连续子序列(至少包含一个数)。样例 比如, 序列 [2,3,-2,4] 中乘积最大的子序列为 [2,3] ,其乘积为6。思路分析: 看到这道题,想起的第一是求最大子序列和的那道题的方法,保存最大值,每次与当前的数相乘,然后把比较是不是最大值,如果是则将其保存,但是转念一想,当数列中有偶数个数的负数时,我们会漏掉这种情况。所以新的方法是保存最大值和最小值,这样当我原创 2017-10-19 14:08:37 · 260 阅读 · 0 评论 -
lintcode--区间求和 I
给定一个整数数组(下标由 0 到 n-1,其中 n 表示数组的规模),以及一个查询列表。每一个查询列表有两个整数 [start, end] 。 对于每个查询,计算出数组中从下标 start 到 end 之间的数的总和,并返回在结果列表中。样例 对于数组 [1,2,7,8,5],查询[(1,2),(0,4),(2,4)], 返回 [9,23,20]思路分析: 这里首先看到的第一想法就是暴力法直接将原创 2017-10-18 17:42:47 · 434 阅读 · 0 评论 -
lintcode---电话号码的字母组合
Given a digit string excluded 01, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephone buttons) is given below.原创 2017-10-12 16:26:52 · 1373 阅读 · 0 评论 -
lintcode--数飞机
LintCode –number-of-airplanes-in-the-sky(数飞机)原题链接:http://www.lintcode.com/zh-cn/problem/number-of-airplanes-in-the-sky/给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机?样例 对于每架飞机的起降时间列表:[[1,10],[2,3],原创 2017-10-11 16:54:16 · 544 阅读 · 0 评论 -
面试题目干货
转载地址:https://www.nowcoder.com/discuss/57978 信号的生命周期?信号产生-》信号在进程中注册-》信号在进程中的注销-》执行信号处理函数信号的产生方式?(1)当用户按某些终端键时产生信号(2)硬件异常产生信号【内存非法访问】(3)软件异常产生信号【某一个条件达到时】(4)调用kill函数产生信号【接受和发送的所有者必须相同,或者发送的进程所有者必...转载 2018-03-12 14:21:34 · 350 阅读 · 0 评论 -
lintcode---Sum of first K even-length Palindrome numbers
题目描述: Given a integer k, find the sum of first k even-length palindrome numbers. Even length here refers to the number of digits of a number is even.样例: Given k = 3, return 66 // 11 + 22 + 33 = 66原创 2017-12-22 16:22:38 · 282 阅读 · 0 评论 -
lintcode--平面范围求和-不可变矩阵(leetcode--Range Sum Query 2D)
题目描述: 给一 二维矩阵,计算由左上角 (row1, col1) 和右下角 (row2, col2) 划定的矩形内元素和.注意事项: 1.你可以假设矩阵不变 2.对函数 sumRegion 的调用次数有很多次 3.你可以假设 row1 ≤ row2 并且 col1 ≤ col2样例: 给出矩阵[ [3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1,原创 2017-12-21 17:33:34 · 394 阅读 · 0 评论 -
下厨房
题目描述: 牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。输入描述:每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。输出描述: - 输出一行一个数字表示完成所有料理需要多少种不同的...原创 2018-03-28 15:17:02 · 707 阅读 · 0 评论 -
lintcode-----meeting roomII
题目描述: Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],…] (si < ei), find the minimum number of conference rooms required.样例: Given intervals = [(0,30...原创 2018-03-22 17:13:11 · 504 阅读 · 0 评论 -
lintcode--------前K大数II
题目描述: 实现一个数据结构,提供下面两个接口 1.add(number) 添加一个元素 2.topk() 返回前K大的数样例: s = new Solution(3); create a new data structure. s.add(3) s.add(10) s.topk() return [10, 3] s....原创 2018-03-12 20:48:57 · 284 阅读 · 0 评论 -
lintcode----前k大的数
题目描述; 在一个数组中找到前K大的数样例: 给出 [3,10,1000,-99,4,100], k = 3. 返回 [1000, 100, 10]思路讲解:这里我的第一想法就是利用一个小的res,首先将里面添加进nums的前k个数,然后对其排序,之后我们就将nums位置k后面的数逐个的与res数组比较这里就用到了对有序数组的插入排序,结果这样很不辛的在70%的时候超时了,后面我看了...原创 2018-03-12 18:03:56 · 330 阅读 · 0 评论 -
lintcode---买卖股票的最佳时机II
题目描述: 假设有一个数组,它的第i个元素是一个给定的股票在第i天的价格。设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参与多个交易(你必须在再次购买前出售股票)。样例: 给出一个数组样例[2,1,2,0,1], 返回 2思路讲解: 由于不限制买卖的次数,我们只要有利润就进行交易,这样就能使得我们的利润最大化。代码详解:class S原创 2018-01-18 21:04:55 · 611 阅读 · 0 评论 -
lintcode----大整数乘法
题目描述: 以字符串的形式给定两个非负整数 num1 和 num2,返回 num1 和 num2 的乘积。样例: 1.num1 和 num2 的长度都小于110。 2.num1 和 num2 都只包含数字 0 - 9。 3.num1 和 num2 都不包含任意前导零。 4.您不能使用任何内置的BigInteger库内方法或直接将输入转换为整数。思路讲解: 这里我的思路就是直接将num2得原创 2017-12-14 22:25:00 · 1335 阅读 · 0 评论 -
lintcode-----3sum smaller
题目描述: Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 <= i < j < k < n that satisfy the condition nums[i] + nums[j] + nums[k] < target....原创 2018-03-22 18:00:06 · 191 阅读 · 0 评论 -
lintcode----最高频的k个单词
题目描述: 给一个单词列表,求出这个列表中出现频次最高的K个单词。注意事项: 你需要按照单词的词频排序后输出,越高频的词排在越前面。如果两个单词出现的次数相同,则词典序小的排在前面。样例: 给出单词列表:[ “yes”, “lint”, “code”, “yes”, “code”, “baby”, “you”, “baby”, “chrome”, “saf...原创 2018-03-13 13:54:09 · 1937 阅读 · 0 评论 -
lintcode------数字整除数
题目描述: 一个数字整除数是指一个可以被其中包含的每个数字整除的数. 举个例子, 128是一个数字整除数, 因为 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0. 并且, 数字整除数不允许包含数字 0. 给出数字取值的上下限, 输出一个包含所有数字整除数的列表, 包括边界.注意事项 : 0<=L<=R<=2^31-1,R-L...原创 2018-03-13 14:19:39 · 623 阅读 · 0 评论 -
lintcode----最左的1
题目描述: 一个二维数组,每一行都只有0和1,前面部分是0,后一部分是1,找到数组里面所有行中最左边的1所在的列数。注意事项: 数组的行数,列数不超过1000 为了约束时间复杂度,你的程序将会运行50000次样例: 给出 arr = [[0,0,0,1],[1,1,1,1]], 返回 0。解释: arr[1][0]为所有行中最左边的1,其所在的列为0。 给出 arr = [...原创 2018-03-23 15:47:51 · 537 阅读 · 0 评论 -
lintcode---质数乘积
题目描述: 给定一个无重复的质数数组arr,每个质数最多使用一次,求所有无重复的乘积并从小到大排序。注意事项: 2 <= |arr| <= 9 2 <= arr[i] <= 23样例: 给出 arr = [2,3], 返回 [6]。解释: 2*3=6。 给出 arr = [2,3,5], 返回 [6,10,15,30]。解释: 2*3=6, 2...原创 2018-03-23 16:50:02 · 991 阅读 · 0 评论 -
lintcode----统计负数
题目描述: 给一个横向排序的且纵向也排序的的 n * m的矩阵, 问里面有几个负数。注意事项: 输入的矩阵大小为 n x m ,n <= 500,m <= 500。 为了约束程序的时间复杂度,你的程序将会运行 10^5 次样例: Given mat =[ [-5,-3,-1,0,1], [-2,-1,0,0,1], [0,11,12,12,1...原创 2018-03-25 19:18:13 · 316 阅读 · 0 评论 -
线段树专辑
个人学习线段树的时候发现的比较好的博客,就转载了。 原文章地址:http://blog.csdn.net/zearot/article/details/48299459目录: 一:综述 二:原理 三:递归实现 四:非递归原理 五:非递归实现 六:线段树解题模型 七:扫描线 八:可持久化 (主席树) 九:练习题一:综述 假设有编号从1到n的n个点,每个点都存了一些信息,转载 2018-01-05 17:35:37 · 310 阅读 · 0 评论 -
lintcode---将二叉查找树转换成双链表
题目描述: 将一个二叉查找树按照中序遍历转换成双向链表。样例: 给定一个二叉查找树: 4 / \ 2 5 / \1 3返回 12345。思路讲解:这道题主要想考察的点就是二叉树的遍历与双向链表的建立,所以我们只需要分别解决这两个问题就好了,首先我们利用递归将二叉树的中序列表找出,然后我们再递归建立链表,这里建立链表我们需要注意的点就是链表的首节点原创 2018-01-18 15:11:58 · 448 阅读 · 0 评论 -
lintcode----将数组重新排序以构造最小值
题目描述: 给定一个整数数组,请将其重新排序,以构造最小值。样例: 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字:3+32+321=3323213+321+32=33213232+3+321=32332132+321+3=323213321+3+32=321332321+32+3=321323其中,最小值为 321323,所以,将数组重原创 2018-01-17 21:37:54 · 273 阅读 · 0 评论 -
litncode----和大于s的最小子数组
题目: 给定一个由 n 个正整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。样例: 给定数组 [2,3,1,2,4,3] 和 s = 7, 子数组 [4,3] 是该条件下的最小长度子数组。思路讲解:首先我们先读一下题目,最小长度的子数组,这个首先是满足大于S,然后是最小长度,最后才是子数组。这个三个条件的先后还是要搞清楚的,最原创 2018-01-17 20:25:09 · 450 阅读 · 0 评论 -
lintcode--单词拆分III
题目描述: 给出一个单词表和一条去掉所有空格的句子,根据给出的单词表添加空格, 返回可以构成的句子的数量, 保证构成的句子中所有的单词都可以在单词表中找到.样例: 给一个字符串 CatMat, 给出字典 [“Cat”, “Mat”, “Ca”, “tM”, “at”, “C”, “Dog”, “og”, “Do”], 返回 3 我们可以构成一下 3 条语句: CatMat = Cat Mat原创 2018-01-02 00:06:47 · 567 阅读 · 0 评论 -
lintcode---格雷编码
题目描述: 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个二进制的差异。 给定一个非负整数 n ,表示该代码中所有二进制的总数,请找出其格雷编码顺序。一个格雷编码顺序必须以 0 开始,并覆盖所有的 2n 个整数。注意事项: 对于给定的 n,其格雷编码顺序并不唯一。 根据以上定义, [0,2,3,1] 也是一个有效的格雷编码顺序。样例: 给定 n = 2, 返回原创 2018-01-10 23:30:03 · 374 阅读 · 0 评论 -
lintcode--二叉搜索树交换节点(leetcode--Recover Binary Search Tree)
题目描述: 在一棵二叉搜索树中, 只有两个节点是被交换的. 找到这些节点并交换, 如果没有节点被交换就返回原来的树的根节点.样例: 给一棵BST: 返回 思路讲解: 这道题我的一开始思路是通过先序遍历得到一个数组,然后将数组重新排序好,然后再重新赋值给原二叉树。后面发现实现不了。(个人太菜了) 然后发现另外一种别的方法,如对于数组1,2,7,4,5,6,3,8,9,如何判断是哪两个元素发原创 2017-12-17 23:51:06 · 602 阅读 · 0 评论