![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode
文章平均质量分 72
解决一些经典例题
轻颂呀
努力学习编程!
展开
-
leetcode.环形链表问题
当slow走到环的入口处时,假设fast与slow的距离为N。fast走两步,slow走一步,这时N会变成N-1。只要它们一直走,N一定会等于零,这时候它们相遇,即存在环。第二轮它们的距离是C-1,如果C-1是奇数那它们就永远就遇不到了。设slow走的距离为L ,fast走的距离为L+X*C+C-N(X是fast在环里转的圈数)。所以3L=L+X*C+C-N。分析:2L为偶数,将上面的不存在条件带入会发现该等式并不成立,所以走三步会遇到。快指针走两步慢指针走一步,让它们一起往后走,如果它们相等即存在环。原创 2024-05-14 11:13:28 · 399 阅读 · 1 评论 -
面试题..汉诺塔
如果n>1时我们先把上面的n-1个圆盘看成一个圆盘,调Move函数把它移到B柱上,只不过这时目标杆是B柱,中转杆是C柱。这时再次调Move函数把剩下的n-1个圆盘全部移到C柱上只不过这次中转杆是A柱,起始杆是B柱。简单来说就是有三根柱子假设是A柱(起始杆),B柱(中转杆),C柱(目标杆)。目标是把A柱上的所有圆盘移到C柱上。我们可以先假设有两个圆盘,把小圆盘放到B柱再把大圆盘放到C柱,最后把小圆盘放到C柱上就搞定了。再写出圆盘移动的Move函数(A柱作为start,B柱作为temp,C柱作为end)。原创 2024-02-21 16:37:56 · 275 阅读 · 1 评论 -
用位操作符.解决经典面试题
先a = a ^ b,在b = a ^ b (b=a(a^b)^b→b=a),然后a = a ^ b (a=a(a^b)^b(a)→a=b)。先求和a = a + b,在b = a - b (b=a(a+b)-b→b=a),在a = a - b (a=a(a+b)-b(a)→a=b)。例:(101)^(100)=(001)。例:(101)|(100)=(101)。(例:a = 1,b = 2→a = 2,b = 1)。例:(101)&(100)=(100)。(例:a = 1,b = 2→c = 3)。原创 2024-03-02 09:20:06 · 322 阅读 · 1 评论