![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
zhaokane
这个作者很懒,什么都没留下…
展开
-
链表节点计数-LintCode
计算链表中有多少个节点.样例: 给出 1->3->5, 返回 3.#ifndef C466_H#define C466_H#include<iostream>using namespace std;/** Count how many nodes in a linked list.* * Example* Given 1->3->5, return 3.*/class List原创 2017-11-29 14:38:57 · 2512 阅读 · 0 评论 -
数据流中第一个唯一的数字-LintCode
给一个连续的数据流,写一个函数返回终止数字到达时的第一个唯一数字(包括终止数字),如果在终止数字前无唯一数字或者找不到这个终止数字, 返回 -1.样例: 给一个数据流 [1, 2, 2, 1, 3, 4, 4, 5, 6] 以及一个数字 5, 返回 3 给一个数据流 [1, 2, 2, 1, 3, 4, 4, 5, 6] 以及一个数字 7, 返回 -1思路: 利用set1存放所有出现的数字,q原创 2017-11-29 14:51:37 · 573 阅读 · 0 评论 -
判断k个素数之和-LintCode
给两个数字 n 和 k. 我们需要判断 n 是否可以写成 k 个素数的和.注意事项:n <= 10 ^ 9戈德巴赫的猜想样例:给出 n = 10, k = 2返回 true // 10 = 5 + 5给出 n = 2, k = 2返回 false思路: 利用哥德巴赫猜想得出,任何大于2的偶数可以分解为两个质数的和。 由于最小的素数为2,当n<2k时,不可能实现,返回false; 当n原创 2017-11-30 10:59:28 · 501 阅读 · 0 评论 -
C++ tuple 元组合并与排序
#include <tuple>#include <iostream>#include <boost/variant.hpp>using namespace std;auto get_student(int id){ if (id == 0) return make_tuple(3.8, 'A', "Kane"); if (id == 1) r原创 2017-11-21 20:57:00 · 2343 阅读 · 0 评论 -
替换为右侧最大值-LintCode
给一整数数组, 用当前元素之后数组中的最大元素来替换当前元素(右侧的最大元素). 因为最后一个元素的右边没有元素了, 所以用 -1 来替换这个值. 举个例子, 如果数组为 [16,17,4,3,5,2], 那么它就需要修改为 [17,5,5,5,2,-1].样例: 给出数组 nums = [16,17,4,3,5,2], 改变数组为 [17,5,5,5,2,-1], 你需要在原地实现。思路: 从原创 2017-12-01 09:33:52 · 384 阅读 · 0 评论 -
判断是否为平方数之和-LintCode
给一个整数 c, 你需要判断是否存在两个整数 a 和 b 使得 a^2 + b^2 = c.样例: 给出 n = 5 返回 true // 1 * 1 + 2 * 2 = 5 给出 n = -5 返回 false思路: 构建set包含0*0,1*1,…,c√∗c√\sqrt {c}*\sqrt{c} 利用指针it,遍历set,查找是否有元素等于c-*it, 若存在,返回true#if原创 2017-11-22 16:07:26 · 964 阅读 · 0 评论 -
Digit Divide Numbers-LintCode
A Digit Divide Numbers is a number that is divisible by every digit it contains.For example, 128 is a Digit Divide Numbers because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.Also, Digit Divide Number原创 2017-12-10 19:24:16 · 245 阅读 · 0 评论 -
形式为a^i b^j c^k的子序列数量-LintCode
给一字符串, 对形式为 a^i b^j c^k 的子序列进行计数, 即它由 i 个字符 a, 接着是 j 个字符 b, 然后是 k 个字符 c组成, i >= 1, j >= 1, k >= 1. Note: 如果两个子序列在原字符串中的index集合是不同的,则认为两个子序列不同。样例: 给定 s = abbc, 返回 3 子序列为 abc, abc 和 abbc 给定 s = abcabc原创 2017-12-10 21:16:36 · 474 阅读 · 0 评论 -
验证二叉查找树-LintCode
给定一个二叉树,判断它是否是合法的二叉查找树(BST)一棵BST定义为:节点的左子树中的值要严格小于该节点的值。节点的右子树中的值要严格大于该节点的值。左右子树也必须是二叉查找树。一个节点的树也是二叉查找树。样例: 一个例子: 2 / \1 4 / \ 3 5上述这棵二叉树序列化为 {2,1,4,#,#,3,5}.思路: 对于二叉查找树进行中序遍历,将元素依次存原创 2017-11-22 16:33:55 · 196 阅读 · 0 评论 -
二进制时间-LintCode
给了一个二进制显示时间的手表和一个非负整数 n, n 代表在给定时间表上 1 的数量, 返回所有可能的时间注意事项:输出的顺序没有要求.小时不能包含前导零, 比如 "01:00" 是不允许的, 应该为 "1:00".分钟必须由两位数组成, 可能包含前导零, 比如 "10:2" 是无效的, 应该为 "10:02".样例: 给出 n = 1 返回 [“1:00”, “2:00”, “4:00”原创 2017-12-02 09:11:53 · 3190 阅读 · 0 评论 -
单词拆分 III-LintCode
给出一个单词表和一条去掉所有空格的句子,根据给出的单词表添加空格, 返回可以构成的句子的数量, 保证构成的句子中所有的单词都可以在单词表中找到.样例: 给一个字符串 CatMat, 给出字典 [“Cat”, “Mat”, “Ca”, “tM”, “at”, “C”, “Dog”, “og”, “Do”], 返回 3 我们可以构成一下 3 条语句: CatMat = Cat Mat CatMat原创 2017-12-02 14:19:10 · 1080 阅读 · 0 评论 -
单词切分-LintCode
给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。 样例: 给出 s = “lintcode” dict = [“lint”,”code”] 返回 true 因为”lintcode”可以被空格切分成”lint code”#ifndef C107_H#define C107_H#include<iostream>#include<unordere原创 2017-07-13 14:53:46 · 314 阅读 · 0 评论 -
Coin Change II-LintCode
You are given coins of different denominations and a total amount of money. Write a function to compute the number of combinations that make up that amount. You may assume that you have infinite number原创 2017-12-11 14:03:15 · 307 阅读 · 0 评论 -
左旋转二进制位-LintCode
位旋转 -—— 旋转(或循环移位)是类似于移位的操作, 不同的是一端脱落的那一位会被放回到另一端 在左旋转中, 左端掉下来的那一位会放在右端 假设 n 用 8 位二进制来存. 对 n = 11100101 左旋转 3 位, 得到 n = 00101111 (左移3位, 原先的前3位放在末尾). 如果 n 用 16 位或 32 位二进制来存, 那么对 n (000…11100101)左旋转了之后原创 2017-12-11 14:55:44 · 364 阅读 · 0 评论 -
Find Elements in Matrix-LintCode
Given a matrix, find a element that appear in all the rows in the matrix.You can assume that there is only one such element.样例: For example: Given a matrix:[ [2,5,3], [3,2,1], [1,3,5]]return 3原创 2017-12-11 18:29:15 · 249 阅读 · 0 评论 -
电灯切换-LintCode
一个房间中有 n 盏灯最初是开着的,并且墙上有 4 个开关。在对开关进行 m 次未知的操作后,你需要返回这 n 盏灯有多少种不同的状态。 假设 n 盏灯的标号为 [1, 2, 3 …, n], 4 个开关的功能如下:将所有灯从开变成关,从关变成开。将标号为偶数的灯从开变成关,从关变成开。将标号为奇数的灯从开变成关,从关变成开。将标号为 (3k + 1) 的灯从开变成关,从关变成开,k =原创 2017-12-02 18:45:16 · 319 阅读 · 0 评论 -
Rearrange a String With Integers-LintCode
Given a string containing uppercase alphabets and integer digits (from 0 to 9), write a function to return the alphabets in the order followed by the sum of digits.样例: Given str = AC2BEW3, return ABCE原创 2017-12-12 14:07:42 · 325 阅读 · 0 评论 -
数组中最大的差值-LintCode
给 m 个数组, 每一个数组均为升序. 现在你可以从两个不同的数组中挑选两个整数(每一个数组选一个)并且计算差值. 我们将两个整数 a 和 b 之间的差定义为它们的绝对差 |a - b|. 你的任务是去找到最大的差值.注意事项: 每一个给出的数组长度至少为 1. 至少有两个不为空的数组 m 个数组中所有整数的个数和在 [2, 10000]范围内. m 个数组中所有的整数均将在[-10000,原创 2017-12-13 15:45:22 · 1822 阅读 · 0 评论 -
阶乘除法的最后一位数-LintCode
给出两个数 A 和 B, 其中 B >= A. 我们需要计算结果 F 的最后一位数是什么, 其中F = B! / A!(1 <= A, B <= 10^18, A 和 B 非常大)样例:给出 A = 2, B = 4, 返回 2A! = 2 以及 B! = 24, F = 24 / 2 = 12 --> 最后一位数为 2 给出 A = 107, B = 109, 返回 2思路: 只要A~B中的数原创 2017-12-05 09:18:04 · 344 阅读 · 0 评论 -
所有子集的和-LintCode
给一整数 n, 我们需要求前n个自然数形成的集合的所有可能子集中所有元素的和。样例:给出 n = 2, 返回 6可能的子集为 {{1}, {2}, {1, 2}}. 子集的元素和为 1 + 2 + 1 + 2 = 6给出 n = 3, 返回 24可能的子集为 {{1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}子集的和为:1 + 2 + 3原创 2017-12-05 09:49:02 · 1574 阅读 · 0 评论 -
3个不同的因子-LintCode
给一 正整数 n (1 <= n <= 10^18). 判断这个数是否正好只有 3 个不同的因子, 如果正好有 3 个不同的因子就返回 true, 否则返回 false样例: 给出 n = 9, 返回 true 数字 9 正好有 3 个因子: 1, 3, 9, 所以返回 true. 给出 n = 10, 返回 false思路: 判断正整数是否正好只有 3 个不同的因子,其实就是判断此正整数是否原创 2017-12-05 10:57:08 · 1334 阅读 · 0 评论 -
验证满二叉树-LintCode
如果一棵二叉树所有节点都有零个或两个子节点, 那么这棵树为满二叉树. 反过来说, 满二叉树中不存在只有一个子节点的节点. 更多关于满二叉树的信息可以在这里找到满二叉树 1 / \ 2 3 / \ 4 5不是一棵满二叉树 1 / \ 2 3 / 4 样例: 给出树 {1,2,3}, 返回 true 给原创 2017-12-05 14:28:03 · 1213 阅读 · 0 评论 -
最小划分-LintCode
给出一个整数数组,写一个程序把这个整数数组分成S1跟S2两部分,使S1中的和跟S2中的和的绝对值最小。如果有一个一个整数数组 S 有 n 个数,如果Subset1有 m 个数,Subset2必须有 n-m 个数并且 abs(sum(Subset1) – sum(Subset2)) 应该最小样例:给出nums = [1, 6, 11, 5],返回1// Subset1 = [1, 5, 6],和是12原创 2017-12-05 18:54:32 · 966 阅读 · 0 评论 -
连接两个字符串中的不同字符-LintCode
给出两个字符串, 你需要修改第一个字符串,将所有与第二个字符串中相同的字符删除, 并且第二个字符串中不同的字符与第一个字符串的不同字符连接样例: 给出 s1 = aacdb, s2 = gafd 返回 cbgf 给出 s1 = abcs, s2 = cxzca; 返回 bsxz思路: 利用set,先将s2中的字符存入set1。遍历s1,将不在set1中的字符添加到字符串str中,在set1原创 2017-11-27 09:13:10 · 361 阅读 · 0 评论 -
重复子串-LintCode
给出一个整数数组,写一个程序把这个整数数组分成S1跟S2两部分,使S1中的和跟S2中的和的绝对值最小。如果有一个一个整数数组 S 有 n 个数,如果Subset1有 m 个数,Subset2必须有 n-m 个数并且 abs(sum(Subset1) – sum(Subset2)) 应该最小样例:给出nums = [1, 6, 11, 5],返回1// Subset1 = [1, 5, 6],和是12原创 2017-12-06 14:26:45 · 228 阅读 · 0 评论 -
Count Different Palindromic Subsequences-LintCode
Given a string S, find the number of different non-empty palindromic subsequences in S, and return that number modulo 10^9 + 7. A subsequence of a string S is obtained by deleting 0 or more characters原创 2017-12-25 10:14:25 · 231 阅读 · 0 评论 -
Compute 24 Game-LintCode
You have 4 cards each containing a number from 1 to 9. You need to compute whether they could operated through *, /, +, -, (, ) to get the value of 24.注意事项The division operator / represents real divis原创 2017-12-25 17:07:19 · 313 阅读 · 0 评论 -
计算最大值-LintCode
给一个字符串类型的数字, 写一个方法去找到最大值, 你可以在任意两个数字间加 + 或 *样例: 给出 str = 01231, 返回 10 ((((0 + 1) + 2) * 3) + 1) = 10 我们得到了最大值 10 给出 str = 891, 返回 73 因为 8 * 9 * 1 = 72 和 8 * 9 + 1 = 73, 所以73是最大值思路: 遍历字符串的每一位,转化为数字nu原创 2017-12-08 09:33:40 · 296 阅读 · 0 评论 -
滑动窗口内唯一元素数量和-LintCode
给一个数组和一个滑动窗口的大小, 求每一个窗口内唯一元素的个数和样例:给一个数组 nums = [1, 2, 1, 3, 3] 和 k = 3第一个窗口为 [1, 2, 1], 只有 2 是唯一的, 计数为 1.第二个窗口为 [2, 1, 3], 所有的元素都是唯一的, 计数为 3.第三个窗口为 [1, 3, 3], 只有 1 是唯一的, 计数为 1.总数为 1 + 3 + 1 = 5返原创 2017-12-26 16:20:36 · 509 阅读 · 0 评论 -
Sum of first K even-length Palindrome numbers-LintCode
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 (Sum of fir原创 2017-12-26 17:03:03 · 174 阅读 · 0 评论 -
Tree Longest Path With Same Value -LintCode
假设有一棵有 N 个节点的无向树, 编号为 1 到 N, 每一个节点都有一个int类型的值,不同的节点可以有相同的值。给一个长度为N的数组A,A[j]表示第j + 1个节点的值。再给一个长度为 (N - 1) * 2 的数组 E,对于任意的 0 <= j <= N - 2 都有 E[2 * j], E[2 * j + 1]表示节点 E[2 * j] 与节点 E[2 * j + 1]有边相连。返回具有原创 2017-12-18 15:22:45 · 1370 阅读 · 0 评论 -
Monotone Increasing Digits-LintCode
Given a non-negative integer N, find the largest number that is less than or equal to N with monotone increasing digits.(Recall that an integer has monotone increasing digits if and only if each pair o原创 2018-01-02 14:44:35 · 209 阅读 · 0 评论 -
简化路径-LintCode
给定一个文档(Unix-style)的完全路径,请进行路径简化。样例 “/home/”, => “/home” “/a/./b/../../c/”, => “/c”挑战 :你是否考虑了 路径 = “/../” 的情况? 在这种情况下,你需返回”/”此外,路径中也可能包含双斜杠’/’,如 “/home//foo/”。 在这种情况下,可忽略多余的斜杠,返回 “/home/foo”思路: 首先考原创 2017-12-18 19:54:04 · 436 阅读 · 0 评论 -
杆子分割-LintCode
给一个 n 英寸长的杆子和一个包含所有小于 n 的尺寸的价格. 确定通过切割杆并销售碎片可获得的最大值.例如,如果棒的长度为8,并且不同长度部件的值如下,则最大可获得值为 22(通过切割两段长度 2 和 6 )样例:长度 | 1 2 3 4 5 6 7 8 --------------------------------------------价格 |原创 2017-12-19 09:01:58 · 368 阅读 · 0 评论 -
通配符匹配-LintCode
判断两个可能包含通配符“?”和“*”的字符串是否匹配。匹配规则如下:'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个串完全匹配才算匹配成功。函数接口如下:bool isMatch(const char *s, const char *p)样例 一些例子:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMa原创 2017-12-19 11:18:26 · 329 阅读 · 0 评论 -
Balance Graph-LintCode
Given a directed graph where each edge is represented by a tuple, such as [u, v, w]represents an edge with a weight w from u to v. You need to calculate at least the need to add the number of edges to原创 2018-01-11 20:30:31 · 484 阅读 · 0 评论 -
中国剩余定理-LintCode
给出两个数组 num[0..k - 1] 和 rem[0..k - 1]. 在数组num[0..k - 1]中, 所有的元素都是互质的( gcd 为 1 ). 我们需要找到满足下列条件的最小正数 x: x % num[0] = rem[0], x % num[1] = rem[1], ....................... x % n原创 2017-12-27 16:27:40 · 696 阅读 · 0 评论 -
正则表达式匹配-LintCode
Implement regular expression matching with support for ‘.’ and ‘*’.'.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input string原创 2017-12-19 15:52:16 · 254 阅读 · 0 评论 -
下一个稀疏数-LintCode
一个数是稀疏数如果这个数的 二进制表示 中没有相邻的 1,给出一个 n ,找出大于或等于 n 的最小的稀疏数。 eg. 5 (二进制表示为 101)是稀疏数,但是 6 (二进制表示为 110 )不是稀疏数样例: 给出 n = 6,返回 8下一个稀疏数是8 给出 n = 4,返回 4下一个稀疏数是4 给出 n = 38,返回 40下一个稀疏数是40 给出 n = 44,返回 64下一个稀疏数原创 2018-01-03 14:39:55 · 308 阅读 · 0 评论 -
最大子数组VI-LintCode
给出一个整数数组,找出异或值最大的子数组。 什么是异或:https://en.wikipedia.org/wiki/Exclusive_or注意事项: 预期时间复杂度为O(n)样例: 给出nums = [1, 2, 3, 4],返回 7,子数组[3, 4]有最大的异或值 给出nums = [8, 1, 2, 12, 7, 6],返回 15,子数组[1, 2, 12]有最大的异或值 给出nu原创 2018-01-04 21:48:12 · 559 阅读 · 0 评论