刷题
小清新嘻嘻无敌
这个作者很懒,什么都没留下…
展开
-
leetcode287. Find the Duplicate Number
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number,原创 2017-02-26 22:38:51 · 236 阅读 · 0 评论 -
C++各类大数模板
转载自 http://blog.csdn.net/y990041769/article/details/20116995首先大数加法 两个大数相加[cpp] view plain copy print?string sum(string s1,string s2) { if(s1.length() {转载 2017-08-02 00:43:33 · 828 阅读 · 0 评论 -
数字在排序数组中出现的次数(剑指offer面试题56)
题目描述统计一个数字在排序数组中出现的次数。题目思路:1)常规思路:对该数字在数组中遍历,计数出现次数2)改进:既然是一个排序数组,很自然就可以想到二分查找。用二分查找分别定位数字k在数组中第一次出现和最后一次出现的位置。(1)为了获得数字k最后一次出现的位置,我们可以将数组中所有小于等于k的都归为左边部分,left = mid + 1,指向第一个大于k的位置。原创 2017-07-20 01:38:10 · 338 阅读 · 0 评论 -
打印二叉树题型:从上到下打印,打印为为多行以及按之字形打印为多行
打印二叉树题目:1)从上到下打印出二叉树的每个节点,同一层的结点按照从左至右的顺序打印。如上图,打印结果则为1,2,3,4,5,6这种层次遍历可以如下分析:首先要打印根节点,打印之前要保存其左孩子2,和右孩子结点3。下一步打印左结点2,同样保存其左右孩子节点。可以发现这是一个类似于队列,先进先出的结构。用队列实现,每次一个结点要出队,则其左右孩子入队。cod原创 2017-07-23 10:55:12 · 351 阅读 · 0 评论 -
删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5题目分析:删除链表中的结点要比较当前结点是否与前面结点和后面结点相同,只有两个都不同的结点才保留。用pre保存前一个节点, cur保存当前结点,cur->next则是后一个结点。如果当前结点只原创 2017-07-22 21:39:30 · 247 阅读 · 0 评论 -
multiset<int, greater<int>> test 相关
当需要使用greater时,在头文件里需要添加#include#include#include#include#include using namespace std;int main(){ vector data{1,4,3,8}; //vector d1(data.begin()+1, data.begin() + 3); multiset > test;原创 2017-07-19 09:49:20 · 1784 阅读 · 0 评论 -
数组中出现的次数超过一半的数字(剑指offer面试题39)
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。题目思路:1) 先排序,在确认最中间的那个数是否符合要求class Solution {public: int MoreThanHalfNum_原创 2017-07-18 22:32:52 · 236 阅读 · 0 评论 -
链表中环的入口结点
题目描述一个链表中包含环,请找出该链表的环的入口结点。分析如下:设有两个指针,慢指针为slow,每次向后移动一位。 快指针为fast,每次向后移动两位。a为AC段的长度,c为环的周长。蓝色部分CB段长度为 d.则慢指针在相遇时走的长度为len_slow = a + m * c + d;快指针在相遇时走的长度为 len_fast = a +原创 2017-07-21 17:39:54 · 219 阅读 · 0 评论 -
顺时针打印矩阵(剑指offer面试题29)
题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.题目思路:打印每一圈的时候需要四步:1)从左至右,2)从上到下,3)从右到左,4)从下到上。打印最内一圈有原创 2017-07-18 11:48:32 · 220 阅读 · 0 评论 -
从上往下打印出二叉树的每个节点,同层节点从左至右打印(剑指offer,面试题32)
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。题目思路:采用一个例子说明:8,6,10,5,7,9,11.对于第一层,只有根节点 “8”,第二层有节点“6”和“10”。从根节点分析,为了能够接下来打印节点为8的两个子节点,我们应该在遍历到该节点时把值为6 和 10 的两个节点保存到一个容器里。按照从左向右打印的要求,取出6,保存其两个子节点“5”和“7”原创 2017-07-18 11:36:14 · 3097 阅读 · 0 评论 -
环形链表约瑟夫问题(可参考剑指offer面试题62)
约瑟夫问题:0,1,2,...n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。可以通过环形链表(经典算法)或者一个递推公式实现原创 2017-07-21 11:35:08 · 476 阅读 · 0 评论 -
剑指offer--树的子结构(牛客网)
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {原创 2017-07-17 16:29:18 · 281 阅读 · 0 评论 -
和为S的数字及进阶
题目:在一个递增排序的数组中,找到两个数字和为S,如果有多组,则返回乘积最小的那两个数字。思路:排序好的数组。用两个指针p,q分别指向首尾两个数字。如果和小于S,则指针p向右移动一位继续比较。如果和大于S,则指针q向左移动一位继续比较。如果相等,则p和q分别向右和左移动一位寻找下一组数字。class Solution {public: vector FindNum原创 2017-07-20 19:55:10 · 283 阅读 · 0 评论 -
位操作相关题目-数组中某数字只出现了一次及多种进阶版本
原题:有一个数组,其中有一个数字只出现了一次,其余的数字均出现了两次,请找到该数组.class Solution {public: int FindNumber(vector vec) { int len = vec.size(); if (len == 0) return -1; int res = 0; for (int i = 0; i < len; i++) {原创 2017-07-20 17:08:42 · 241 阅读 · 0 评论 -
位操作基础和技巧
转载自: http://blog.csdn.net/morewindows/article/details/7354571Title: 位操作基础篇之位操作全面总结Author: MoreWindowsE-mail: morewindows@126.comKeyWord: C/C++ 位操作 位操作技巧 判断奇偶 交换两数 变换符号 求绝对值 位操转载 2017-07-17 09:52:37 · 373 阅读 · 0 评论 -
按位与& 与 逻辑与 && 以及位操作相关基础和题型
按位与:a&b是把a和b都转换成二进制数然后再进行与的运算;逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为零,a&&b就为零。例如:a&b 9&8 1001 1000结果是1000 a&&b 9&&8 结果是1&对每一个都判断;&&只要前面是false就输出false,而不继续判断后面了http原创 2017-07-17 09:48:54 · 367 阅读 · 0 评论 -
leetCode 56, Merge Intervals
题目:Given a collection of intervals, merge all overlapping intervals.For example,Given [1,3],[2,6],[8,10],[15,18],return [1,6],[8,10],[15,18].Subscribe to see which companies asked this q原创 2017-02-27 11:09:43 · 264 阅读 · 0 评论 -
上楼梯问题,模余防止溢出
题目:有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。测试样例:1返回:1class GoUpstairs {public: in原创 2017-08-01 10:15:43 · 1385 阅读 · 0 评论