Giter Club home page Giter Club logo

codinginterviews's People

Contributors

aheadlead avatar flcwl avatar gatieme avatar happerys avatar lzx1413 avatar neycyanshi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codinginterviews's Issues

链表中环的入口结点的双指针简单解法

来自leetcode讨论区

基本思路

  • 两个指针,a每次走一步,b每次走两步
  • 相遇后,a设为list的开头,b不变,然后a、b同时走直到相遇

证明

    • 第一次,经过k步相遇
    • 链的起点到环的起点为s长度
    • 环的起点到第一次相遇的点距离为m
    • 环的长度为r
  • 所以
    • 2k-k=nr=r
    • s=k-m=r-m
      • 因为a走了不到整条链,比整条链少r-m长度,然后b走了整条链加上m长度
      • ba多走的可以分成两段
        • 第一部分是从相遇点到环的终点
        • 第二部分是从环的起点到相遇点
      • 第二部分a也走过(所以这一部分b刚好走过两倍a走过的长度)
      • 所以,第一部分就是等价于a从链的起点到环的起点
    • 从而,只要一起再走r-m步就可以相遇

代码

    class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
            next = null;
        }
    }

    public class Solution {
        public ListNode detectCycle(ListNode head) {
            ListNode p1 = head, p2 = head;
            while (p1 != null && p2 != null) {
                p1 = p1.next;
                if (p2.next == null) {
                    return null;
                }
                p2 = p2.next.next;
                if (p1 == p2) {
                    break;
                }
            }
            if (p1 == null || p2 == null) {
                return null;
            }
            p1 = head;
            while (p1 != p2) {
                p1 = p1.next;
                p2 = p2.next;
            }
            return p1;
        }
    }

a%20b%20c%20d *** stack smashing detected ***: ./004 terminated 已放弃 (核心已转储)

``
#include

using namespace std;

#define __tmain main

class Solution
{
public:
void replaceSpace(char *str,int length)
{
int i, j;
int count = 0;
int len = length;
for(int i = 0; i < length; i++)
{
if(str[i] == ' ')
{
count++;
}
}

    len = length + count * 2;
    for(i = length - 1, j = len - 1;
        i >= 0 && j >= 0;)
    {
        if(str[i] == ' ')
        {
            str[j--] = '0';
            str[j--] = '2';
            str[j--] = '%';
            i--;
        }
        else
        {
            str[j--]  = str[i--];
        }
    }
    str[len] = '0';

}

};

int __tmain( )
{
char str[10 + 1] = "a b c d";

Solution solu;
solu.replaceSpace(str, 10);

cout <<str <<endl;

return 0;

}
``
char str[10 + 1] = "a b c d";
换成:
char str[7 + 1] = "a b c d";
报错:
a%20b%20c%20d
*** stack smashing detected ***: ./004 terminated
已放弃 (核心已转储)

约瑟夫问题描述有误

每次喊到_m_的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,

应该是是每次喊到_m-1_的那个小朋友

12- 题目"输出从1到最大的N位数"第一种解法有问题

12.求1-N的所有的最大N为数的解法有问题,我刚开始使用swift翻译之后,发现结果不对,然后我把你的代码粘贴到编辑器里,使用C++写,发现是你本身的代码有问题。

代码见此

假设此时len = 2, "1,0",takeover = 1,走第一个方法内,nsum = 2,后面又有一个 nSum ++ ,导致sum变成3,高位变成30,直接越过了20-30的所有的数。

用你的代码的结果运行如下
运行结果

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.