在外网访问学校服务器以及其他资源,例如下载论文等,均可以通过此方法实现。要求有一台具有公网ip的服务器。下文命令行中用到的地址定义如下:
公网服务器ip地址:server_ip
内网机器ip地址:local_ip

阅读全文 »

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

解题思路:此题跟计算斐波那契数列一样,令n为台阶的阶数,则f(n)=f(n-1)+f(n-2)
注意初始条件的不同,当n=2时候,f(n)=2,与斐波那契数列之间相差一位。如下表所示,a列为最终输出的结果,b列为上一次的结果,在斐波那契数列中,f(2)=1,而在此题f(2)=2,因此需要调整初始位置,使得idx==0时,a=1,b=0

阅读全文 »

题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39

解题思路:斐波那契数列的递推公式为f(n)=f(n-1)+f(n-2),因此最直接的想法是直接递归来做,直接递归的话,算法的时间复杂度过大。此题可以用动态规划来解答,题目中限定了n的范围,因此可以先声明一个长度为(n+1)的数组,用来保存结果。更好的办法是,只用两个数保存结果,因为斐波那契数列的计算只跟前面两个值有关。

阅读全文 »

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

此题与leecode 153类似,不同之处在于leecode-153是严格递增的数组,而此题是单调不减的数组。注意,在leecode的测试用例中,存在不旋转数组的测试用例。

解题思路:最直接的想法是,遍历一遍数组,找到最小值,然而这种算法的时间复杂度为*O(n)*,没有利用到给出的旋转性质。第二种方法就是遍历数组,找到旋转点的位置,即Array[i] > Array[i+1],则Array[i+1]就是我们要找的最小值,这种算法没有利用数组是排序过的性质。对于排序过的数组,自然而然想到二分查找。

阅读全文 »

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

解题思路:在二叉树的前序遍历中,根节点总是最先出现;而中序遍历中,左子树的节点先出现。因此,我们可以先根据前序遍历中的第一个值k,构建根节点,接着在中序遍历中找到k, 则中序遍历中k左边的为左子树,右边的为右子树,然后递归的构建左右子树即可。

阅读全文 »

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

此题与leecode 74相同,可以参照leecode的矩阵示例。
解题思路:数组为排序过的数组,左上角的元素最小,右下角的元素最大。我们可以选取一个位于中间值的位置作为搜索的起始点,因此这个位置可以是左下角或者是右上角,本次选取左下角作为搜索起始点。

阅读全文 »

首先需要清除当前网络接口的ip地址,然后再重新申请一个ip地址。注意,如果是从远程操作的话,一定要用 “&&” 连接两条命令,否则执行完第一条命令之后,本机就会与服务器断开连接。执行完命令之后,用新的ip地址连接进入服务器。

1
sudo ip addr flush dev eth0 && sudo dhclient
阅读全文 »
0%