面试题
只会写臭虫
这个作者很懒,什么都没留下…
展开
-
字符串向右循环移动k位(面试题)
怎么实现字符串向右循环移动k位效率最高。一位一位移动效率肯定不行。正解:将字符串看做两段,后k位为一段,后k位之前的字符串为一段。然后分别使这两段字符串逆序,得到的字符串再逆序及为正确答案。(原理还不是太懂)代码:#include<iostream>#include<string>#include<algorithm>using namespace ...原创 2019-06-24 22:55:06 · 1335 阅读 · 0 评论 -
产生一个长度为100的数组,为数组中的每一项随机填充1-100之间的数并且保证不重复
思路:先产生一个1到100的顺序数组a和一个目标数组b,然后记录一个变量range(a中剩下的元素个数),然后一个for循环(i从1到100),每次产生一个1到range的随机数index,然后把a[index]赋值给b[i],然后把a[range]赋值给a[index],令range–。c语言代码:#include<iostream>#include<stdlib.h&g...原创 2019-07-27 19:02:12 · 2587 阅读 · 0 评论 -
利用递归实现栈的逆序
代码:利用递归暂时保存栈顶元素。其他见注释//利用递归得到栈底元素,并将栈底元素弹出int getbottom(stack<int> &s) { int top = s.top(); s.pop(); if (s.empty()) return top; int next = getbottom(s); //不是栈底元素的时候要把当前元素入栈 s.push...原创 2019-08-20 13:13:54 · 211 阅读 · 0 评论 -
对两个变量的值进行互换的三种方式
1.最常见的一种,利用第三个变量tmptmp=a,a=b,b=tmp2.在进行加法的时候可能会造成溢出x=x+yy=x-yx=x-y3.利用异或x=x^yy=x^yx=x^y原创 2019-08-15 09:57:43 · 414 阅读 · 0 评论 -
如何寻找单链表的中间节点(快慢指针)
设置两个指针,一个快指针,每次走两步,一个慢指针,每次走一步,直到快指针走到链尾。public class searchMid { public Node method(Node head) { Node p=head; Node q=head; while(q!=null&&q.next!=null&&q.next.next!=null) {...原创 2019-08-15 14:55:54 · 357 阅读 · 0 评论 -
递归和非递归方法求斐波那契数
递归方法求斐波那契数int fun(int n){ int num = 0; if (n <= 2) { num = 1; return num; } else return fun(n - 1) + fun(n -2); }int main(){ int n = 30; for (int i = 1; i <=n; i++) { pri...原创 2019-07-15 13:45:41 · 181 阅读 · 0 评论