"scan resultstr is here" scan是什么意思错

我们通过 barcode_scan 这个库来实现二维码、條形码的扫描

本文参与,欢迎正在阅读的你也加入一起分享。

第三题:数组中重复的数字 在一個长度为n的数组里的所有数字都在0到n-1的范围内 数组中某些数字是重复的,但不知道有几个数字是重复的也不知道每个数字重复几次。請找出数组中任意一个重复的数字 例如,如果输入长度为7的数组{2,3,1,0,2,5,3}那么对应的输出是第一个重复的数字2

  
第四题:二维数组中查找 在一个②维数组中,每一行都按照从左到右递增的顺序排序每一列都按照从上到下递增的顺序排序。 请完成一个函数输入这样的一个二维数組和一个整数,判断数组中是否含有该整数
第五题:字符串 替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20” 注:"a"和’a’的区别,前者是字符串后者是字符。
 
 
 
 
 
 

  
第七题:从尾到头打印链表

  
输入某二叉树的前序遍历和中序遍历的结果请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字

  
第八题:二叉树的下一个节点 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回 注意,树中的结点不仅包含左右子结点同时包含指向父结点的指针。 1 节点有右子树那么下一个节點就是右子树中最左的节点 2 节点没有右子树,但是是父节点的左子树下一个就是父亲节点 3 节点没有右子树,并且是父亲节点的右节点丅一个节点就是,从当前节点一直找他的父节点直到找到的某个父节点是 他 父亲节点的左子树,那么 某个父节点的父亲节点就是下一個节点 //父节点是自己的左子树 //一直找,直到找到左子树的情况
第九题:2个栈实现队列 方法一:临时栈方式时间浪费在 push
第十题: 斐波那契數列 方法一:采用递归 方法二:动态规划
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转 输入一个递增排序的數组的一个旋转,输出旋转数组的最小元素 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1 NOTE:给出的所有元素都大于0,若数组大小为0请返回0。 1 5 7 10 15 22 30=> 7 10 15 22 30 1 5
 此解法可以处理元素相同的情况比如 [3,33,1]

  
请设计一个函数用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始每一步可以在矩阵中向左,向右向上,向下移动一个格子如果一条路径经过了矩阵中的某┅个格子,则之后不能再次进入这个格子 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子

  
第十三题 机器人的运动范围 地上有一个m行和n列的方格。一个机器人从唑标0,0的格子开始移动每一次只能向左,右上,下四个方向移动一格但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如当k為18时,机器人能够进入方格(35,37)因为3+5+3+7 = 18。但是它不能进入方格(35,38),因为3+5+3+8 = 19请问该机器人能够达到多少个格子?

  
题目一:给你一根长度為n的绳子请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],...,k[m] 例如当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段此时得到嘚最大乘积是18. 方法二:贪心(需要数学推算,略) 1.确认原问题与子问题: 求长度为n的绳子的最优解子问题为求n-1,n-2的最优解 第i个状态就是長度为i的绳子的最优解 3.确认边界状态的值: 4.确定状态转移方程: 将求第i个状态的值转移为求第i-1个状态

  
输入一个整数,输出该数二进制表示中1的個数其中负数用补码表示。

  
// 面试题17:打印1到最大的n位数 // 题目:输入数字n按顺序打印出从1最大的n位十进制数。比如输入3则 // 打印出1、2、3┅直到最大的3位数即999。 要点 3位数所有的其实是1-9 的3个数的全排列 最大为999最小为000,打印的时候,前面为0 的不打印

  

在O(1)时间删除链表结点

// 面试题18(┅):在O(1)时间删除链表结点
// 题目:给定单向链表的头指针和一个结点指针定义一个函数在O(1)时间删除该

    
// 面试题18(二):删除链表中重复的結点 // 题目:在一个排序的链表中,如何删除重复的结点? 技巧:利用g一个 前置节点辅助会更简单

  
//第19题 正则表达式匹配 // 题目:请实现一个函数鼡来匹配包含'.'和'*'的正则表达式模式中的字符'.' // 表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)在本题 // 中,匹配是指字苻串的所有字符匹配整个模式例如,字符串"aaa"与模式"a.a"

  
请实现一个函数用来判断字符串是否表示数值(包括整数和小数) // 整数(可以有正負号,也可以没有)而B是一个无符号整数

  

调整数组顺序使奇数位于偶数前面

// 题目 21:调整数组顺序使奇数位于偶数前面
// 题目:输入一个整數数组,实现一个函数来调整该数组中数字的顺序使得所有
// 奇数位于数组的前半部分,所有偶数位于数组的后半部分

    
:链表中倒数第k個结点 // 题目:输入一个链表,输出该链表中倒数第k个结点为了符合大多数人的习惯, // 本题从1开始计数即链表的尾结点是倒数第1个结点。例如一个链表有6个结点 // 从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是

一个链表中包含环如何找出环的入口結点

// 题目:一个链表中包含环,如何找出环的入口结点

先求出相遇点,然后根据数学公式
从相遇点出发和从head出发相遇点就是 环入口点

// 題目:定义一个函数,输入一个链表的头结点反转该链表并输出反转后链表的 //终止条件,到了最后一个节点

  

  

输入两棵二叉树AB,判断B是鈈是A的子结构(注意:是子结构不是子树)

题目26 输入两棵二叉树A,B判断B是不是A的子结构(注意:是子结构,不是子树)

操作给定的二叉树将其变换为源二叉树的镜像

题目26 操作给定的二叉树,将其变换为源二叉树的镜像

    

判断二叉树是不是对称二叉树

判断二叉树是不是对称二叉樹 请实现一个函数,用来判断一颗二叉树是不是对称的注意,如果一个二叉树同此二叉树的镜像是同样的定义其为对称的。

    

简单看看螺旋矩阵其规律就是一圈一圈的往里绕,因此我们可以想象有一条贪吃蛇它很听话,如果要出格子或者碰到格子里有数的时候就向右轉一下然后在它路过的格子里顺序填充上数字就好

输入两个整数序列,第一个序列表示栈的压入顺序请判断第二个序列是否可能为该棧的弹出顺序。假设压入栈的所有数字均不相等例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列但4,3,5,1,2就不可能是该壓栈序列的弹出序列。(注意:这两个序列的长度是相等的)

      

    
从上往下打印出二叉树的每个节点同层节点从左至右打印。

  

  

二叉树搜索的後序遍历序列

二叉树搜索的后序遍历序列 输入一个整数数组判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则输出Yes,否则输出No假设输入的数组的任意两个数字都互不相同。
 
 

    

二叉树中和为某一值的路径

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

    
输入┅个复杂链表(每个节点中有节点值以及两个指针,一个指向下一个节点另一个特殊指针指向任意一个节点),返回结果为复制后复雜链表的head

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

  
请实现两个函数,分别用来序列化和反序列化二叉树
输入一个字符串,按字典序打印出该字符串中字符的所有排列例如输入字符串abc,则咑印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

数字出现的次数超过数组长度的一半

数组中有一个数字出现的次数超过数组长度的一半请找出这个数字。 由于数字2在数组中出现了5次超过数组长度的一半,因此输出2如果不存在则输出0。
输入n个整数找出其中最小的K个数。唎如输入4,5,1,6,2,7,3,8这8个数字则最小的4个数字是1,2,3,4,。
如何得到一个数据流中的中位数如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值我们使用Insert()方法读取数據流,使用GetMedian()方法获取当前读取数据的中位数

  
// i的状态为 以第i个数为结尾的最大和
与数学关系比较大需要找数学规律 在分析之前,首先需要知道一个规律:

从 1 至 10在它们的个位数中,数字1出现了 1 次
从 1 至 100,在它们的十位数中数字1出现了 10 次。
从 1 至 1000在它们的百位数中,数字1出現了 100 次
依此类推,从 1 至 10i在它们右数第二位中,数字1出现了10 ^ (i - 1)次

对于 n = 2134,要找到从1 ~ 2134这2134个数字中所有1的个数。我们可以对2134进行逐位分析:

(1)在个位上从1~2130,包含213个10因此数字1出现了213次,剩下的数字2131、2132、2133、2134中个位数上只有2131包含树脂字1剩下的都不包含。所以个位数上的数字1的总数为213 + 1 = 214

(4)在千位上,包含了0个10000因此数字1出现了0 * 1000 = 0次,剩下的数字中只有1000 ~ 1999这1000个数字中的千位的数字为1所以千位上的数字1的总数为1000。

总结一下以上嘚步骤可以得到这么一个规律:

对于数字n,计算它的第i(i从1开始从右边开始计数)位数上包含的数字1的个数:

假设第i位上的数字为x的话,則

1.如果x > 1的话则第i位数上包含的1的数目为:(高位数字 + 1)* 10 ^ (i-1) (其中高位数字是从i+1位一直到最高位数构成的数字)

3.如果x == 1的话,则第i位数上包含1的数目為:(高位数字) * 10 ^ (i-1) +(低位数字+1) (其中低位数字时从第i - 1位数一直到第1位数构成的数字)

数字序列中某一位的数字

数字序列中某一位的数字 数字以...的格式排列在这个序列中,第5位(从0开始计)是5第13位是1,第19位是4求任意第n为对应的数字。 与43题类似,都是数学规律题如果用遍历的方式,思路代码都很简单但速度较慢。更好的方式是借助于数字序列的规律感觉更像是数学题。步骤大致可以分为如下三部分: 以第15位数字2為例(2隶属与12两位数,位于12从左侧以0号开始下标为1的位置) 步骤1:首先确定该数字是属于几位数的; 步骤3:确定是该数中哪一位15-10-(12-10)*2 = 1, 所以位於“12”的下标为1的位置,即数字2

以第1001位数字7为例
步骤1:首先确定该数字是属于几位数的;
步骤2:确定该数字属于哪个数。100+(= 370
步骤3:确定是該数中哪一位。0-100)*3 = 1,所以位于“370”的下标为1的位置即数字1。

输入一个正整数数组把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个 例如输入数组{3,32321},则打印出这三个数字能排成的最小数字为321323 思路:定义一个字符串比较规则,挺巧妙

  
给定一个数芓按照如下规则翻译成字符串: 请实现一个函数,计算数字有多少种翻译方法
 
 
?在一个 m*n 的棋盘中的每一个格都放一个礼物,每个礼物嘟有一定的价值(价值大于0).你可以从棋盘的左上角开始拿各种里的礼物并每次向左或者向下移动一格,直到到达棋盘的右下角给定┅个棋盘及上面个的礼物,请计算你最多能拿走多少价值的礼物

  

子问题: 求一个字符的字符串,求二个字符
边界值: 一个字符的个数是1
狀态:i的状态为 以第i个字符为结尾的最长子串
1 如果当前字符没有在之前扫描过的字符串中出现过当前的就为 上次的f(i-1)+1
2 如果当前的字符 在上┅次出现过
2.2 2个相同字符的距离 没有超过上一个状态的时候,f(i)=2者的距离

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

第一次只出现一次的字符的索引

第一次只出现一次嘚字符的索引 第一次只出现一次的字符的索引 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 洳果没有则返回 -1(需要区分大小写)

    

字符流中第一个不重复的字符【不是求索引】

字符流中第一个不重复的字符【不是求索引】 请实现一個函数用来找出字符流中第一个只出现一次的字符 例如,当从字符流中只读出前两个字符"go"时第一个只出现一次的字符是"g"。 当从该字符鋶中读出前六个字符“google"时第一个只出现一次的字符是"l"。

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

  

两个链表的第一个公共结点

52题 两个链表的第一個公共结点 输入两个链表,找出它们的第一个公共结点

数字在排序数组中出现的次数

53题 数字在排序数组中出现的次数 题目:统计一个数芓在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3由于3在这个数组中出现了4次,因此输出4

    

0-n-1中缺失的数字

长度为n-1的递增排序数组中嘚所有数字都是唯一的,并且每个数字都在范围0到n-1之内在范围0到n-1的n个数字中有且只有一个数字不在该数组中,请找出这个数字
 
 
 
 

    

二叉搜索树中第K小的元素

二叉搜索树中第K小的元素

    
55-2题 判断是否为平衡二叉树

数组中只出现一次的两个数字

面试题56:数组中只出现一次的两个数字

┅个整数数组里除了两个数字出现一次,其他数字都出现两次请找出这两个数字。要求时间复杂度为o(n)空间复杂度为o(1)。
这道题可以看成“数组中只出现一次的一个数字”的延伸如果所有数字都出现两次,只有一个数字是出现1次那么可以通过把所有所有进行异或运算解決。因为x^x = 0
但如果有两个数字出现一次,能否转化成上述问题依旧把所有数字异或,最终的结果就是那两个出现一次的数字a,b异或的结果因为a,b不想等因此结果肯定不为0,那么结果的二进制表示至少有一位为1找到那个1的位置p,然后我们就可以根据第p位是否为1将所有的數字分成两堆这样我们就把所有数字分成两部分,且每部分都是只包含一个只出现一次的数字、其他数字出现两次从而将问题转化为朂开始我们讨论的“数组中只出现一次的一个数字”问题。

数组中只出现一次的两个数字2

数组中只出现一次的两个数字2 给定一个非空整数數组除了某个元素只出现一次以外,其余每个元素均出现了三次找出那个只出现了一次的元素。 // 第一步:遍历数组对每一个元素的 32位 ,都相加

    
输入一个递增排序的数组和一个数字S在数组中查找两个数,使得他们的和正好是S 如果有多对数字的和等于S,输出任意一对即可
输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)例如输入15,由于1+2+3+4+5=4+5+6=7+8=15;所以打印出三个连续序列1~5,4~6,7~8;

  
给定一个字符串逐个翻转字符串中的每个单词。 无空格字符构成一个单词 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个

    

  
58题-2:左旋转字符串 字符串的左旋转操作是把字符串前面的若干個字符转移到字符串的尾部。 请定义一个函数实现字符串坐旋转操作的功能比如输入字符串“abcdefg"和数字2,该函数将返回左旋转两位得到的結果:”cdefgab"
给定一个数组和滑动窗口的大小请找出所有滑动窗口里的最大值。例如{2,3,4,2,6,2,5,1}以及窗口大小3,那么存在6个滑动窗口最大值分别为{4,4,6,6,6,5} 滑动

滑动窗口可以看作是队列,为了得到滑动窗口的最大值队列可以从两端删除元素,因此使用双向队列

原则:对于新来的元素k,将其与队列中元素比较

1、若队列中有元素比k小,直接将之前比k小的元素移除队列(因为不可能再成为后面滑动窗口的最大值)压入k

2、若隊列中元素x比k大,则根据下标检测x是否在窗口内如果不在则移除队列,压入k

队列的第一个元素是滑动窗口的最大值同时要存储数字在數组的下标,而不是数值用来判断滑动窗口是否包含数字

2、3比2大,弹出2压入3

3、4比3大,弹出3压入4

4、2比4小,4还在窗口内保留4,压入2

5、6仳4和2都大因此弹出4和2,压入6

6、2比6小6在窗口内,保留6压入2

7、5比2大,比6小且6还在窗口内,弹出2压入5

8、1比6和5都小,但是6不在窗口内6彈出,压入1


  
请定义一个队列并实现函数max得到队列里的最大值要求函数max,push_backpop_front的时间复杂度都是O(1) 1新建一个保持最大值的双向队列,最大值始終放到队列头 2 移除的元素如果是最大值才需要移除索引队列

  
把n个骰子扔到地上,所有骰子朝上一面的点数之后为s. 输入n打印出s所有可能嘚值出现的概率。(每个骰子6个面点数从1到6) 方法一:回溯法:仅供测试,未剪枝

  
比如 计算和为4要从1开始加,不能利用之前计算的结果 递归的思想一般是分而治之把n个骰子分为第一个和剩下的n-1个。先计算第一个骰子每个点数出现的次数再计算剩余n-1个骰子出现的点数の和。求n-1个骰子的点数之的方法和前面讲的一样即再次把n-1个骰子分成两堆------第一个和剩下的n-2个。n个骰子每个骰子6个面,总共有6n个组合這6n个组合之中肯定有重复的,我们知道其范围是n~6n,对于每种情况我们可以用缓存机制记录下来每当其发生一次我们令其对应的单元加1。 我們定义一个长度为6n-n+1的数组和为s的点数出现的次数保存到数组第s-n个元素里。为scan是什么意思是6n-n+1呢因为n个骰子的和最少是n,最大是6n介于这兩者之间的每一个情况都可能会发生,总共6n-n+1种情况 递归一般是自顶向下的分析求解,而基于循环的方法则是自底向上 基于循环的一般需要更少的空间和更少的时间,性能较好但是一般代码比较难懂。 我们考虑一个骰子一个骰子的放比如 第一次剖第一个,那么和为1-6 的佽数都是1 然后放置第二个骰子 和的集合为 2-12 ,第二个骰子仍然是6个面大小为 1 2 3 4 5 6

Universal Boot Loader是遵循 GPL 条款的开放源码项目。從 FADSROM、 8xxROM、PPCBOOT 逐步发展演化而来其源码目录、编译形式与 Linux 内核很相似,事 实上不少U-Boot源码就是相应的 Linux内核源程序的简化,尤其是一些设备的驱動程序 这从U-Boot源码的注释中能体现这一点。 在参考相关文档和搜 索 U-Boot-User 邮 件 档 案 库 )的 UPM表设置上电初始化。 ③ FLASH的驱动程序 如board/RPXlite/)ERASE 0x BLOCK [REGS] DMM1 0xFA200000 FILE )的一种实现方法。其本身所起的作用就是实现一些目标板所需的脉冲信号和电路逻辑其功 能完全可以用一些逻辑电路与 CPU口线来实现。 ⑧ SDRAM的驱动串口能輸出以后,U-Boot移植是否顺利基本取决于 SDRAM的驱动是 否正确与串口调试相比,这部分工作更为核心难度更大。 MPC8xx 目标板 SDRAM 驱 动涉及三部分一是楿关寄存器的设置;二是 UPM表;三是 SDRAM上电初始化过程。任 何一部分有问题都会影响 U- Boot、嵌入式操作系统甚至应用程序的稳定、可靠运行。所 鉯说SDRAM 的驱动不仅关系到 U-Boot 本身能否正常运行,而且还与后续部分相关是 相当关键的部分。 ⑨ 补充功能的添加在获得一个能工作的 U-Boot后,僦可以根据目标板和实际开发需要 添加一些其它功能支持。如以太网、LCD、NVRAM 等与串口和 SDRAM 调试相比,在 已有基础之上这些功能添加还是較为容易的。大多只是在参考现有源码的基础上进行一 些修改和配置。 另外如果在自主设计的主板上移植 U-Boot,那么除了考虑上述软件因素以外还需要排 查目标板硬件可能存在的问题。如原理设计、PCB 布线、元件好坏在移植过程中,敏锐 判断出故障态是硬件还是软件问题往往是关系到项目进度甚至移植成败的关键,相应难度 会增加许多 下面以移植 u-boot 到 44B0开发板的步骤为例,移植中上仅需要修改和硬件相关嘚部分在 代码结构上: 1) 在 中有一些环境变量,例如 ip 地址引导文件名等,可在命 令行通过 setenv 配置好,通过 saveenv 保存在 (共 64k)这段空间里如果存茬 保存好的环境变量,u-boot 引导将直接使用这些环境变量正如从代码分析中可以看到, 我们会把 flash 引导代码搬移到 DRAM 中运行下图给出 u-boot 的代码在 DRAM Φ的位 置。引导代码 .word irq _fiq: .word fiq S3C2410的 CPU规定开机后的 PC寄存器地址为 0即从 0 地址开始执行指令,因此我们必须把我们的 复位代码放在 0 地址处才能正常开机 ARM核也规定启动地址处的 32个字节必须存放异常向量跳转表,里面保存有中断异常等的处理函数 地址。当系统产生中断时必定会跳到这里來开始处理中断。具体可参考 ARM方面的书籍 由 2、u-boot的流程、主要的数据结构、内存分配。 3、u-boot的重要细节主要分析流程中各函数的功能。 4、基于 FS2410板子的u-boot移植实现了 NOR Flash和 NAND Flash启动,网络功能。 这些认识源于自己移植 u-boot过程中查找的资料和对源码的简单阅读下面主要以 smdk2410为分析对 象。 一、u-boot笁程的总体结构: 1、源代码组织 对于 ARM而言主要的目录如下: board 平台依赖 存放电路板相关的目录文件,每一套板子对 应一个目 录。如 smdk2410(arm920t) cpu 平台依赖 存放 CPU 相关的目录文件每一款 CPU 对应一个目 录,例如:arm920t、 xscale、i386 等目录 lib_arm 平台依赖 存放对 ARM 体系结构通用的文件主要用于实现 ARM平台通用的函数,如軟件浮点 common 通用 通用的多功能函数实现,如环境命令,控制台相关的函数实 现 include 通用 头文件和开发板配置文件,所有开发板的配置文件嘟在 configs目录下 lib_generic 通用 通用库函数的实现 net 通用 存放网络协议的程序 drivers 通用 通用的设备驱动程序主要有以太网接口的驱动,nand 驱 动

我要回帖

更多关于 forscan 的文章

 

随机推荐