
lintcode
aite_
人间值得
展开
-
Sunny News No.3 个位数统计
题目要求给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (00),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入格式每个输入包含1个测试用例,即一个不超过1000位的正整数N。输出格式对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及原创 2018-01-30 17:58:25 · 151 阅读 · 0 评论 -
165. 合并两个排序链表
点击打开链接合并两个排序链表,使用三个指针,有两个指针分别指需要比较的当前节点,另一个指向要插入的位置的前一个节点。需要比较两个链表的头节点的值,头节点的值小的可以作为主链表,将另一个链表拆开插入主链表。两种情况的方法是一样的,我们可以写一个通用函数。class Solution {public: /* * @param l1: ListNode原创 2018-01-25 20:37:39 · 167 阅读 · 0 评论 -
167. 链表求和
点击打开链接判断两个链表的大小,如果链表长度不想等:以短的链表为准,遍历链表计算。然后再遍历长链表。count来记录是否进位,如果两个链表都遍历完,count还有进位,那么再建立一个节点存1,来表示多出来的进位。class Solution {public: /* * @param l1: the first list * @param原创 2018-01-26 19:50:35 · 240 阅读 · 0 评论 -
80. 中位数
点击打开链接设定一个中点,确保中点的值就是我们要找的中位数,这样我们只需要用一个循环就可以解决问题,当到达中间点位置的时候跳出循环。过程中,设定了一个标志 j , j 可以充当一个从前到后便利的标志,j 之前的是已经排好顺序的值。class Solution {public: /* * @param : A list of integers原创 2018-01-26 20:22:07 · 319 阅读 · 0 评论 -
46. 主元素
点击打开链接空间复杂度为O(1),但时间复杂度不能达到O(n)。在累计记录count的同时,比较是否出现次数严格大于数组的二分之一。class Solution {public: /* * @param nums: a list of integers * @return: find a majority number */原创 2018-01-26 20:51:35 · 147 阅读 · 0 评论 -
141. x的平方根
点击打开链接用二分法计算平方根,一开始的时候我设定了最大值为输入的x,因为我认为得出的结果一定是不会超过x本身的,但是这样就出现了溢出的现象,在看了一些资料之后发现,有人在做这道题时将最大上限设定为46341,原因就是,使用二分法,将 mid*mid 的值与 x 比较,为了防止计算评方时发生溢出,二分上限为 46341 而非 x 的值。class Solution {public: /*...原创 2018-02-09 22:32:32 · 285 阅读 · 0 评论 -
模拟赛(一)
点击打开链接26.求整数段和#include using namespace std;int main(){ int a, b; int sum = 0; int j = 0; cin >> a >> b; for(int i = a; i <= b; i++) { j++; sum += i; cout << "\t" << i;原创 2018-02-06 17:13:05 · 146 阅读 · 0 评论 -
517. 丑数
点击打开链接输入的数字可以对2,3,5进行取余判断,到最后数字除到1,可以判断为丑数。0不为丑数,要单独提出来。class Solution {public: /* * @param num: An integer * @return: true if num is an ugly number or false */原创 2018-02-06 19:18:12 · 138 阅读 · 0 评论 -
491. 回文数
点击打开链接回文数和符号匹配问题类似,都是要使用栈的先进后出原理,然后用数组储存数字的每一位,然后和栈中弹出的数进行比对。我使用了c++中带有的stack库的函数。可以直接对栈进行操作。class Solution {public: /* * @param num: a positive number * @return: true i原创 2018-02-06 20:01:08 · 157 阅读 · 0 评论 -
66. 二叉树的前序遍历
点击打开链接二叉树的遍历分为前序,中序,后序,层序四种。题目要求是前序遍历,有递归和非递归两种。相对而言,递归的方法更简短。(一)递归void PreOrder(BiNode *bt){ if(bt == NULL) return; else { cout data << " "; PreOrder(bt->lchild); PreOrder原创 2018-02-07 20:14:41 · 258 阅读 · 0 评论 -
67. 二叉树的中序遍历
点击打开链接中序遍历遵循“左根右”的原则。(一)递归void InOrder(BiNode *bt){ if(bt == NULL) return; else { InOrder(bt->lchild); cout data << " "; InOrder(bt->rchild); }}(二)非递归将二叉树的最左边的子原创 2018-02-07 20:22:35 · 138 阅读 · 0 评论 -
35. 翻转链表
点击打开链接这道题的挑战是在原地进行链表的翻转,我用了三个指针,两个指头指针,一个指头指针的下一个,其中 r 固定指向最开始的头不变,其余的 q 和 p 用来指向过程中的节点。我最开始只使用了两个指针 p 和 q,发现结果只能显示两个节点,也就是说明链表没连上,通过画图发现,我的方法在进行第三个节点连接时,p指针,也就是最开始指向头节点的指针发生了变化,所以我又使用了一个指针,原创 2018-01-25 19:31:00 · 293 阅读 · 0 评论 -
101. 删除排序数组中的重复数字 II
点击打开链接题目接上一篇 100 。允许出现两次,可以设定一个标志 falg 来计数,其余的不发生变化,将flag值初始设定为0,重复一次就加一,将多余重复的覆盖,最后重新设定vector的大小。与100类似。public: /** * @param A: a list of integers * @return : return an原创 2018-01-25 18:46:48 · 127 阅读 · 0 评论 -
100. 删除排序数组中的重复数字
点击打开链接题中要删除给定的排序数组的重复数字,所以可以使用两个量来遍历整个数组,使用 i 和 j ,i 用来表示出现了重复数字的位置,j 用来向后遍历数组,直到找到不重复的数字,再复制到 i 所在位置的后面。最后可以重新设定vector 的大小,使用 nums.resize(size type) ,这样得出的新的集合就不存在重复元素。题中要求不要使用额外的空间,所以这道题的空原创 2018-01-25 18:40:55 · 374 阅读 · 0 评论 -
Sunny News No.5 考试座位号
题目要求每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。输入格式输入第一行给出一个正整数N(考生信息之原创 2018-01-30 18:17:56 · 141 阅读 · 0 评论 -
Sunny News No.7 念数字
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“fu”字。十个数字对应的拼音如下: 0: ling1: yi2: er3: san4: si5: wu6: liu7: qi8: ba9: jiu输入格式输入在一行中给出一个整数,如: 1234 。提示:整数包括负数、零和正数。输出格式在一行中输出这原创 2018-01-30 18:21:22 · 172 阅读 · 0 评论 -
Sunny News No.6 连续因子
题目要求一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式输入在一行中给出一个正整数N(1输出格式首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1*因子2*……*因子k”的格式输出最小的连原创 2018-02-01 20:05:14 · 159 阅读 · 0 评论 -
1. A + B问题
Write a function that add two numbers A and B. You should not use + or any arithmetic operators. NoticeThere is no need to read data from standard input stream. Both parameters are given i原创 2018-01-22 19:34:20 · 457 阅读 · 0 评论 -
2.尾随零
Write an algorithm which computes the number of trailing zeros in n factorial.Have you met this question in a real interview? YesExample11! = 39916800, so the out should be 2原创 2018-01-22 19:51:55 · 645 阅读 · 0 评论 -
6. 合并排序数组 II
Merge two given sorted integer array A and B into a new sorted integer array.Have you met this question in a real interview? YesExampleA=[1,2,3,4]B=[2,4,5,6]return [1,2,2原创 2018-01-23 17:34:01 · 223 阅读 · 0 评论 -
8.旋转字符串
Given a string and an offset, rotate string by offset. (rotate from left to right)Have you met this question in a real interview? YesExampleGiven "abcdefg".offset=0 => "abc原创 2018-01-23 17:58:18 · 214 阅读 · 0 评论 -
60.搜索插入位置
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.You may assume NO duplicates in the array.原创 2018-01-23 18:16:12 · 270 阅读 · 0 评论 -
9. Fizz Buzz 问题
Given number n. Print number from 1 to n. But:when number is divided by 3, print "fizz".when number is divided by 5, print "buzz".when number is divided by both 3 and 5, print "fizz buzz".原创 2018-01-24 13:35:54 · 796 阅读 · 0 评论 -
112. 删除排序链表中的重复元素
点击打开链接这道题需要有两个及两个以上的节点才可以进行,需要两个指针,一个指当前的节点,一个指后面的节点:如果是相等节点,当前节点不动,后面的节点向后移动;遇到不相等的节点,当前节点指向后面的节点,后面的节点再指向下一个。这样循环,直到链表结束。class ListNode { public: int val; ListNode *next; ListNode原创 2018-01-24 20:01:38 · 186 阅读 · 0 评论 -
114. 不同的路径
点击打开链接关于题目中的动态规划,参考了一下内容点击打开链接根据题目所给的标签,即动态规划,寻找边界条件进行递推class Solution {public: /** * @param m: positive integer (1 <= m <= 100) * @param n: positive integer (1 <= n <= 100)...原创 2018-02-27 20:02:09 · 176 阅读 · 0 评论