
牛客网
Jeff_Winger
这个作者很懒,什么都没留下…
展开
-
二叉树的第k个节点
方法一,中序遍历,所有节点都放入数组,返回第k个。class Solution {public: TreeNode* KthNode(TreeNode* pRoot, int k) { vector<TreeNode*> re; inorder(pRoot,re); if(k<1||k>re.size(...原创 2018-09-26 14:46:56 · 1054 阅读 · 0 评论 -
矩阵中的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个...原创 2018-09-26 19:47:08 · 279 阅读 · 0 评论 -
机器人的运动范围
还是递归的思想,牛客网上剑指offer板块最后两题做法一模一样。终于刷完了。。。class Solution {public: int movingCount(int threshold, int rows, int cols) { vector<int> vtemp(cols,0); vector<vector<in...原创 2018-09-26 20:22:45 · 425 阅读 · 0 评论 -
密码验证合格程序
题目描述密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度超2的子串重复说明:长度超过2的子串输入描述:一组或多组长度超过2的子符串。每组占一行输出描述:如果符合要求输出:OK,否则输出NG代码如下,此题唯一的难点是如何有效判断四种符号是否出现3种及3种以上,代码如下,#include<iostrea...原创 2018-10-11 19:54:04 · 1192 阅读 · 0 评论 -
简单密码
题目描述密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。他是这么变换的,大...原创 2018-10-11 21:44:42 · 729 阅读 · 0 评论 -
购物单(C++)
题目描述王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有 0 个、 1 个或 2 个附件。附件...原创 2018-10-04 17:43:26 · 2117 阅读 · 1 评论 -
坐标移动
开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。 输入: 合法坐标为A(或者D或者W或者S) + 数字(两位以内) 坐标之间以;分隔。 非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。 下面是一个简单...原创 2018-10-05 13:04:25 · 610 阅读 · 1 评论 -
合并两个排序的字符串
头节点的处理是关键,有两种方案,第一要么对头节点先进行处理,得到一个值。第二种就是建立一个辅助头节点,这样就不用单独对头节点进行处理,代码会简洁,只要返回辅助节点的下一个节点就ok了。代码如下,class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListN...原创 2018-09-28 10:55:34 · 1113 阅读 · 0 评论 -
sprintf、strcpy、strncpy及 memcpy 函数,请问这些函数功能有什么区别?
链接:https://www.nowcoder.com/questionTerminal/52e74d99daf64139b0100fd48a5d2b26来源:牛客网 sprintf:把格式化字符串写入某个字符串,对写入buffer的字符数没有限制,存在溢出可能;strcpy:把src开始以\0结尾的字符串复制到以dest为开始的地址空间,dest可能空间不够存放;strncpy:...转载 2018-09-28 13:53:46 · 747 阅读 · 0 评论 -
合唱团
首先注意到题目已经说明是动态规划。所以找状态转移方程,方程如下 因为能力值有负值,可能会出现一个很小的值(负值)乘以当前值(负值)则会出现较大的值,所以考虑到这种情况,有两个状态转移方程。i可以理解为状态,j为第j个数(从0开始)。注意到两个值的间隔在1-d之间,所以在考虑最值的时候要把在这个区间的值都遍历一遍。每算完一个状态,我们都要比较一下数目达到要求的那个状态的最值,这样...原创 2018-09-29 15:23:07 · 265 阅读 · 0 评论 -
简单错误记录(C++)
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。处理:1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;3、 输入的文件可能带路径,记录文件名称不能带路径。输入描述:一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。...原创 2018-10-09 00:36:52 · 574 阅读 · 0 评论 -
数据分类处理
题目描述信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。 采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。输入描述:一组输入整数序列I和一组规则整数序列R,I和R序列的第一个整数为序列的个数(个数不包含第一个整数);整数范围为0~0xFFFFFFFF,序列个数不限输出描述:从R依次中取...原创 2018-11-07 20:22:51 · 1495 阅读 · 0 评论 -
序列化和反序列化二叉树
题目描述请实现两个函数,分别用来序列化和反序列化二叉树。基本思想很简单,序列化就是用某一种遍历方法将二叉树元素存储在字符串数组中,当然要一个个元素分离,分得清谁是谁。反序列化就是把存储在字符串数组中的元素进行重构,使之成为二叉树。我们不妨选择前序遍历的思想进行搜索与重构。本题的关键是如何对元素进行存储,可以放在char**或者vector<string>或者字符串流o/istr...原创 2018-09-26 14:06:51 · 370 阅读 · 0 评论 -
地牢逃脱
给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢。 在答题之前需要明确本题的题意,...原创 2018-09-30 21:07:13 · 379 阅读 · 0 评论 -
重建二叉树(C++描述)
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。基本的思想是遍历前序遍历序列,对于前序遍历序列中的元素,在中序遍历序列中找到其位置,则该位置将中序序列一分为二,即左子树和右子树,而且根据此位置可以...原创 2018-08-29 14:14:12 · 899 阅读 · 0 评论 -
质数因子
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )最后一个数后面也要有空格 代码如下:#include<iostream>using namespace std;bool isprime(int n){ for(int i=2;i<n;i++){ if(n%i==0){ ...原创 2018-09-01 16:28:05 · 199 阅读 · 0 评论 -
计算二进制中1的个数
解题的思路是循环统计二进制数中最后一个1,每次统计完后,把这个1从原数字中去掉,直至统计完最后一个1,原数字变为0。通过将原数字与原数字减1的差做逻辑与可以把二进制数中的最后一个替换为0。代码如下:class Solution {public: int NumberOf1(int n) { int count=0; for(;n!=0;n...原创 2018-09-02 15:21:43 · 266 阅读 · 0 评论 -
链表中倒数第k个节点
先找到第k个节点,假设为p。然后让q节点从头节点开始,p节点也同步next,当p节点到达末尾时,q节点也就到达了第n-k个节点,即倒数第k个节点,省去了求节点总数n的步骤,代码如下/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/c...原创 2018-09-02 17:39:54 · 185 阅读 · 0 评论 -
反转链表
输入一个链表,反转链表后,输出新链表的表头。代码如下:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* p...原创 2018-09-02 19:08:34 · 179 阅读 · 0 评论 -
树的子结构
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)代码如下:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/c...原创 2018-09-05 15:42:18 · 151 阅读 · 0 评论 -
顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.代码如下:class Solution {public: vector<int> pr...原创 2018-09-05 17:08:51 · 161 阅读 · 0 评论 -
数组中的逆序对
这道题思路很简单,根据冒泡或则归并排序来计数有多少对逆数对(即数组小下标对应的值比大下标对应的值要大),but,我提交的结果总是50%。网上找了一下答案,没有错啊,和网友的一样啊。于是又回过头来看题目,要求对1000000007取余,我只在最后的结果处取了余。但是这是不够的,为什么没人提这一点呢。。。。。在内部的单次计数中也要取余啊,不能把超过1000000007的数相加啊。改完之后终于AC了。代...原创 2018-09-18 21:17:39 · 247 阅读 · 0 评论 -
表示数值的字符串(C++描述)
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。方法一,采用正则表达式,题目有缺陷,-.123这种类型是算正原创 2018-09-23 19:26:29 · 1227 阅读 · 0 评论 -
把数组排成最小的数
将数字转换成字符串,对字符串从地位到高位按照位数的大小排序,最后的排序结果是保证高位(字符串左边)是非递减的,在高位相等的基础上,下一个次高位也是非递减的,......。这样就能保证结果最小。法一、自己编写排序程序class Solution {public: string PrintMinNumber(vector<int> numbers) { ...原创 2018-09-13 20:55:42 · 179 阅读 · 0 评论 -
删除链表中重复的节点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 方法一,先对重复节点做标记,然后将有相同值的节点都删除。代码如下:class Solution {public: ListNode* deleteDupl...原创 2018-09-24 11:45:01 · 212 阅读 · 0 评论 -
按之字形顺序打印二叉树
二叉树层次遍历的变形,记录遍历的层号,偶数层要进行翻转。代码如下class Solution {public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int> >re; if(pRoot==NULL){ ...原创 2018-09-24 23:31:34 · 198 阅读 · 0 评论 -
字符串排序
题目描述编写一个程序,将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。 如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。 如,输入: By?e 输...原创 2018-11-21 21:11:12 · 499 阅读 · 0 评论