面试题(抽象问题简化问题)
FSak47
这个作者很懒,什么都没留下…
展开
-
字符串替换空格
点:抽象问题简化问题题意:一个字符串,比如" aaa baea erwe dsa dsa f a ",替换其中的空格字符为"%20"。剑指offer面试题4思路:这个问题的点在于,如果正常从头到尾替换的话,每一个被替换空格,它后面的全部字符串都需要做整体移动 所以要设法想出,怎么能够减少字符串移动 非空格字符需要复制,是不能被减少的。空格可以无处原创 2017-08-17 12:28:58 · 463 阅读 · 0 评论 -
从尾到头打印单向链表
点:抽象问题简化问题题意:单链表,从尾到头打印如原始链表:0 1 2 3 45 6 7 8 9则应该打印:9 8 7 6 54 3 2 1 0思路:如果做链表逆序,会破坏原始链表。这是应该倒过来想。 递归、栈,是倒过来想的常用伎俩,是解决很多面试题的思路。 本题的方案就是:顺序遍历一次,把每个节点值依次入栈,可以显示用栈也原创 2017-08-17 12:43:16 · 299 阅读 · 0 评论 -
两个栈实现一个队列
点:栈的运用题意:用两个栈实现一个队列的功能剑指offer面试题7思路:栈1用于不断的push入数据,当需要做队列的front、pop时,把栈1的数据全部挨个pop出来并push到栈2,这样数据的顺序,在栈2级实现了逆序,即和队列一致了。数据平时依然push到栈1,需要取时从栈2取,栈2为空了就把栈1再整体pop出来挨个推入栈2。代码:#include原创 2017-08-17 15:52:59 · 230 阅读 · 0 评论 -
寻找无序数组中的全部降序对
点:巧用归并排序思维题意:如数组[10,3,15,11,13,1,5,19,2,5,8,7,23,20],寻找其中全部的降序对,所谓降序对,就是数组中,某个位置靠前的数字比某个位置靠后的数字大,比如10在3的前面但是比3大,那么[10,3]就是一个降序对,目的就是寻找全部的降序对。剑指offer面试题36思路:非常直观的办法是,从第一个数开始,遍历其后面的数,相当于冒泡原创 2017-08-18 21:05:08 · 373 阅读 · 0 评论 -
寻找字符串里第一个只出现过一次的字符
点:灵活的思维题意:一个字符串如"abcbddeffg",其中的a、c、e、g都是只出现过一次的字符,而a是它们中最靠前的,找出这样的最靠前的只出现过一次的字符。剑指offer面试题35思路:可能都知道用hash的方式去找,但是如何找到第一个呢,其实并不难只是需要一个稍微灵活的思维1、遍历一次用hash获取每个字符出现的次数2、再从头遍历一次由hash数组找出第原创 2017-08-18 21:27:17 · 714 阅读 · 0 评论 -
消息id乱序接收但顺序发送问题
点:将问题抽象,对应到能完成功能的数据结构算法题意:如rpc server,rpcid是从1-N的正整数不重复,先后接收到rpcid为3、1、5、2、4、8、6、7的消息,即乱序接收,但它必须做到按顺序返回相应部分的返回,比如对于3、1、5、2、4、8、6、7的接收顺序,rpc server的返回顺序应该是1、2、3(接收到2时)和4、5(接收到4时)和6、7、8(接收到7时)原创 2017-08-18 22:25:15 · 1950 阅读 · 0 评论 -
把奇/偶数(或某种特征的数)都放在数组左边问题
点:按某种维度去聚集问题,典型的数组按相遇问题搞题意:如数组[1,5,3,2,4,7,8,66,34,21,23,56,99],希望把全部的奇数集中在数组左边,偶数放右边,如[1,3,5,7,9,2,4,6,8,0]这样剑指offer面试题14思路:按某种维度去聚集问题,典型的数组按相遇问题搞。两个指针一个在头一个在尾,一个向前一个向后,不断一方把本方不符的和对方不符的原创 2017-08-20 17:19:02 · 475 阅读 · 0 评论 -
字符串左右旋
点:技巧性问题题意:如字符串1234567890,希望旋转为5678901234常见面试题思路:还是那句话,这类题,绝对是各种技巧去解决,递归、循环、双向相遇、快慢指针、各种其他技巧。。。。。具体到本题,直接交换的话实现起来甚至还非常麻烦,比如5不能和1交换,因为最后两个字符90怎么办,这种情况程序很难描述。最好的办法是1234能够和567890整体换位,而不是原创 2017-08-21 13:08:56 · 291 阅读 · 0 评论