讨论/面试考题/字节面试算法/
字节面试算法

1.输入1234 输出 1243,从新排列,找出比1234大的第一个数。再比如1324 输出,1342
2.判断二叉搜索树
一个都没做出来,太难受了

展开讨论

第一题:
要比原来数字大,并且是接下来的第一个,那么自然想到先从低位开始交换数字的位置数值的变化小;那么现在问题就是如何找到大的那一个?
假设现有一个数为 abcd,那么从最低位 d 开始,依次与其高位 c b a 比较;如果 d 小或相同,此时d与之交换后得到数小于等于原数,不交换;如果 d 大,那么即可交换,并输出,因为其余低于此位的其它数都小于等于 d,他们与当前数交换后值均小于原值。如果在最低位 d 没发生交换,继续在次低位重复该过程。若直到最高位均未发生替换,那么此时值已经最大。

第二题:
深度优先搜索验证整棵树的每个节点是否符合二叉搜索树的定义,即左叶>当前节点>右叶或左叶<当前节点<右叶。

4
展开全部 17 讨论