自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 百度笔试题分享

有四种不同的分子,a,b是单原子分子,c,d是双原子分子。给出构成这四种分子的原子质量。用这四种分子构成一个元素,给定元素质量,求最多可以用多少个分子。思路:其实机器解题和人解题是一个思路,遇到这种问题,人怎么解决呢。就是尝试。这里有两个算法思想:动态规划和贪心算法。动态规划:将问题分部分解决,且最好前面被解决的问题能够被后面多次使用,那就把前面解决了的问题结果存起来,以备后面使用,从

2017-09-29 21:18:45 469

原创 c++面试经验

1、做过的项目一定要重新 理一遍,立贴为证,必须整理。2、自己写strycpy函数参加下面链接http://blog.csdn.net/gpengtao/article/details/7464061/3、指针和指针相加,没有意义

2017-09-20 22:48:34 395

原创 今日头条笔试题

n个珠子做成的手串,有的手串无色,有的有多种颜色。颜色的种类有c种。给出手串中珠子的序列,如果一种颜色在连续m个珠子中出现,则该颜色不合格,求不合格的颜色个数。#include #includeusing namespace std;#include #include#include#includeusing namespace std;int main() { int n

2017-09-10 22:58:06 864

原创 京东笔试题 神奇数

#include #include#include #include#include#includeusing namespace std;bool isMagic(int target,vector &num);int main() { int num; while(1){ cin >> num; vector numVec; int sum = 0

2017-09-09 01:35:25 1431 3

原创 华为软件精英挑战赛总结

赛题连接:http://codecraft.huawei.com/home/detail总体来看,是一个NP-hard问题。我们队的解题思路是:1)随机选取服务器的位置,用遗传算法寻优,那么遗传算法中的判断算子就是第二步2)在服务器位置固定的情况下,利用最小费用最大流算法计算总费用。该算法思路详见http://blog.csdn.net/u011686226/artic

2017-09-05 22:58:43 366

原创 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* deleteDuplication(ListNode* pHead)

2017-08-24 21:11:56 2975

原创 一个链表中包含环,请找出该链表的环的入口结点。

思路:1.通过两个指针,一个一次走一个节点,一个走两个,如果快的追上慢的,则说明有环           2.且,追上处的节点为环中的一个节点,从该节点一次走一步计数,当回到原地,可知环的节点数           3.两个指针都从链表头开始走,一个先走环的节点数;然后两个同时走,当两个相遇时,相遇节点为环的入口节点/*struct ListNode { int val;

2017-08-24 11:53:45 479

原创 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字

class Solution{    private: int occurence[256];    private: int index;    public: Solution(){        for(int i=0;i            occurence[i] = -1;        }        index = 0;    }

2017-08-24 09:24:45 736

原创 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.

using namespace std;class Solution {public:bool scanUnsignedInteger(char** str){const char* before = *str;while(**str!='\0' && **str >= '0' && **str ++(*str);//当str中存在若干0-9的数字时,返回tru

2017-08-24 00:13:57 2888 1

原创 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字

剑指offer:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配思路:情况非常复杂,利用递归思路,可以大大简化问题。其实,递归就是一步一步解决问题。

2017-08-17 00:42:53 4317 2

原创 2018年网易笔试题1:输入一个数列a,a有n个元素,对数列b进行操作:1)将a的第一元素放在b的末尾,2)翻转b。将操作1)2)进行n次,求b

2018年网易笔试题1:输入一个数列a,a有n个元素,对数列b进行操作:1)将a的第一元素放在b的末尾,2)翻转b。将操作1)2)进行n次,求b例如输入 1 2 3 4输出 4 2 1 3思路:利用双向链表list避免了reverse#include "stdafx.h"#include #include #include #include #include #in

2017-08-12 22:15:38 2558

原创 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法

思路:B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]        先把A[0]*A[1]*...A[i]算出来,载乘以A[i-1]*A[i+1]*...*A[n-1]class Solution {public: vector multiply(const vector& A) { int len = A.size();

2017-08-11 13:36:00 3936

原创 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{

class Solution {public:    // Parameters:    //        numbers:     an array of integers    //        length:      the length of array numbers    //        duplication: (Output) the duplicat

2017-08-11 12:54:06 2033

原创 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

剑指offer:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0注意:C++中的string结尾不一定为NULL(/0)输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+2147483647 1

2017-08-11 12:12:46 977

原创 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号

class Solution {public: int Add(int num1, int num2)//将加法分为进位的部分和不进位的部分,和为两部分之和 { int n1 = (num1 & num2) << 1;//进位的部分 int n2 = num1 ^ num2;//不用进位的部分 while(n1 & n2){//当进

2017-08-11 11:13:31 590

原创 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

class Solution {public: int Sum_Solution(int n) { int ans = n; ans && (ans += Sum_Solution(n - 1)); return ans; }};分析:&& 运算,当前面为假时,后面自动不算。

2017-08-09 09:27:15 2912

原创 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m

剑指offer:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去

2017-08-01 21:47:55 3932

原创 扑克牌中的顺子

剑指offer:题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看

2017-08-01 20:57:49 416

原创 翻转字符串

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路:先翻转整体,再一个单词

2017-08-01 20:27:59 209

原创 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZde

剑指offer:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路:太简单,看代码class Solution {public: stri

2017-08-01 19:37:43 5895

原创 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的

剑指offer:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的思路3 > 思路2 > 思路1首先,递增数列有个规律,如果两个数和相同而要乘积小,则两个数一定是在两边的,如 -2,-1,0,1,2,3,4,5  (-,2,2) 和 (-1,1)和都为0,但是前者乘积更小。思路1:有连个元素,s1 和 s2.假

2017-08-01 19:17:35 977

原创 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一

剑指offer:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!思路:1)判断边界条件,sum不

2017-08-01 16:38:00 2495

原创 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

剑指offer:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:1)如果把数组中的所有数字都依次异或一遍,则可以消掉成对出现的数字,那么还有两个数字是单一的,肯定也不同,那么最终异或的结果肯定不是0。表示在二进制中肯定有一位是1,那么两个不同的数字,一定有一个在该位为1,另一个在该位为0。如果将整个数组按照该位是否为1分为两部分,那么这两部分各

2017-07-30 11:12:38 7052

原创 输入一棵二叉树,判断该二叉树是否是平衡二叉树

剑指offer:输入一棵二叉树,判断该二叉树是否是平衡二叉树思路:核心是用一个函数,既能返回深度,又能返回是否平衡。IsBalanced_Solution_Core函数既能求树的深度,又可以返回是否是平衡二叉树,如果不平衡,则返回-1如果节点为空,返回0;递归求左子树的深度和是否平衡,如果左子树不平衡,返回-1;递归求右子树的深度和是否平衡,如果右子树不平衡,返回-1;如果上面条件都不满足,则

2017-07-28 22:08:25 323

原创 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

剑指offer:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:必须遍历整棵树,有三种遍历方式,前序、后续和中序。这里不用访问节点值,指的是计数。采用前序。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;

2017-07-28 21:23:33 4394

原创 统计一个数字在排序数组中出现的次数。

剑指offer:统计一个数字在排序数组中出现的次数。思路:改进二分查找算法,找到第一个K出现的索引,和第最后一个k的索引。class Solution {public: int GetNumberOfK(vector data ,int k) { //必须先考虑边境条件 int vecLen = data.size(); if(ve

2017-07-28 20:17:40 455

原创 输入两个链表,找出它们的第一个公共结点。

剑指offer:输入两个链表,找出它们的第一个公共结点。思路:如果两个链表有公共节点,那么它们在第一个公共节点以后的节点都相同。1)分别求出两个链表的长度length1和length2;2)求出两个链表长度差dif;3)让长的链表先从头往后先走dif步4)连个链表同时走,直到指针相同为止,返回当前指针。5)如果两链表走到头也地址不相同,则返回NULL代码如下:/*

2017-07-27 16:21:58 361

原创 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%100000000

剑指offer:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007思路:链接:归并排序启发得来,把数据分成前后两个数组(递归分到每个数组仅有一个数据项),合并数组,合并时,从后往前遍历,出现前面的数组值array[i]大于后面数组值array[

2017-07-26 21:30:09 1881

原创 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置

剑指offer:在一个字符串(1思路:用空间换时间。1)建立一个长为256的数组,其实全部由字母组成也可以建立一个长度26*2=52的数组,但是稍微麻烦,这里不使用。将所有元素全部初始化为0;2)遍历字符串,将对应字符对应的数组元素加一;3)再次遍历字符串,直到找到第一个字符对应的数组元素值为1的元素。代码1:用c中的char*字符串,由于题中给出的是str类型,因此需要转换。刚开始还

2017-07-26 11:09:43 3520

原创 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

剑指offer:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路1:对每个数进行整除2 3 5,看余数是不是1。这个办法会很蠢。思路2:第一个丑数是1,第二个是2第几个     1      23  4   5 67 8 9      

2017-07-24 22:41:33 2901

原创 输入一个正整数数组,输入一个正整数数组,把数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

剑指offer:输入一个正整数数组,输入一个正整数数组,把数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:两个数比较,哪个更适合放在前面,可以将两个数拼起来,谁放在前面,拼起来的数小,谁就更适合放在前面。关键是要会用,stringstream做int和string的转换,还要会用sort排序。代码如下:#incl

2017-07-24 21:54:14 1822

原创 从1到n个自然数中,各个数位包含1的个数

剑指offer:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数思路:分三个部分。以21345为例 1)最高位中包含1的个数numFirstDigit:2)从1

2017-07-18 19:42:42 845

原创 最大之列和问题

剑指offer:最大子列和问题HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被

2017-07-18 10:13:16 180

原创 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

剑指offer:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路一:用一个multiset存储k个数,后面得到一个数,如果得到的数字比leastNumbers中的最大值大,则舍去,否则删掉最大值,插入得到的数到multiset中。直到所有的n-k数走一遍。则multiset中的k个数便是n个数中最小的k个数。由于

2017-07-17 21:42:58 4312

原创 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在

剑指offer:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路1:注意到目标数 超过数组长度的一半,对数组同时去掉两个不同的数字,到最后剩下的一个数就是该数字。如果剩下两个,那么这两个也是一样的,就是结果),在其基础上把

2017-07-10 16:40:35 1057

原创 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

剑指offer:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。思路:本题考查递归解决问题的思路。首先将输入的字符串转化为有序字符串。将字符串分为两部分,第一个字符,和后续N-1个字符。后续问题可以用递归函数。按顺序确定第一个字符,然后递归操作剩下的N-1个字符(要

2017-07-10 14:38:16 6137

原创 排序算法之——快速排序

在面试阿里和华为实习生的时候,都被问到快速排序的问题,看来软件岗面试官对这个问题十分重视,因此特别在此剖析。思路:快速排序使用分治法,将问题的规模减小,然后再分别进行处理。从原序列中选择一个主元,将比主元大的元素从右向左放置,而比主元小的元素,从左向右放置。通俗来讲,就是,找一个基准主元,比主元小的元素放在左边,比主元大的元素放在右边,主元放在中间。形成了三个新的数列,左边的数列,中间一个

2017-07-09 17:04:17 251

原创 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

慕课讨论区里的大神答案很牛,不过是java的代码,我后面贴上自己方法二的c++代码链接:https://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5来源:牛客网方法一:非递归版解题思路:1.核心是中序遍历的非递归算法。2.修改当前遍历节点与前一遍历节点的指针指向。    impo

2017-07-08 17:08:31 1111

原创 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序

剑指offer:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)前述:这道题一定要感谢牛客网上大神的解答,为了表示佩服,我就完全不写我的见解了。思路:见大神的注释,特别强调,拆分也很简洁。/*struct RandomL

2017-07-06 17:09:14 870

原创 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径

剑指offer题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径思路:我自己做了一个,后来对比网上别人做的,发现更好,我将他的思路改进了一下,现在将两种思路都讲一下。思路1:看代码。/*struct TreeNode { int val; struct TreeNode *

2017-07-06 14:52:19 978

IAR5.5for430注册机

IAR5.5版本,IAR更新换代很快,所以有的时候会出现高版本打不开低版本的工程的问题,所以提供低版本的供大家使用。这里上传注册机,安装包请在另外的文件中下载,因为一次上传文件不能超过6oM

2015-05-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除