1.给定一个整数序列及一个整数,找出序列中所有整数配对,配对的两数之和为该整数
方法一:快排+比较
指向首尾两指针,计算它们的和与给定的整数比较,分三种情况移动指针,需要遍历整个序列,时间复杂度O(nlgn+n)
方法二:hash表
遍历序列Xn,对于Xi (1)在hash表中查找Xn-Xi,若找到则配对 (2)若未找到,将Xi存入hash表。(当有Xn-Xi中存在于序列中,则能查找到Xi)。
求更高效的方法!!
2.(1)对于两个排好序的数组数列,找出相同的元素(2)是如果上面的序列没有排序。
(1)很简单,直接比较或者折半查找。(2)可用hash表,假设序列分别为A[n],B[m],我们取长度较小的简历hash表,假设m<n,利用B[m]见hash表,查找A[i]是否存在于B[m]中
求其他解决方法!!
ArvonZhang:二叉排序树,可将某个数组先构建一个BSTree,然后另一个数组去查找是否值存在于构建的BSTree中
3. 用c怎样实现c++中的虚函数
结构体+函数指针,只需将函数指针指向不同的即可,但函数指针的赋值在main函数中。
参考http://blog.csdn.net/shallwake/article/details/4943365,这篇blog写的很棒,我模仿自己写了下,简化了许多,要学习还是看上面blog的代码比较靠谱。
我自己模仿写的代码
typedef void(*SHOW)(void); /*基类*/ typedef struct _Shape{ SHOW pshow; }Shape,*pShape; /*派生类*/ typedef struct _Circle{ Shape p; int r; }Circle,*pCircle; /*派生类*/ typedef struct _Square{ Shape p; int h; }Square, *pSquare; /*重写虚函数*/ void showCircle() { printf("showCircle\n"); } /*重写虚函数*/ void showSquare() { printf("showSquare\n"); } /*多态,只需要传递基类指针*/ void virtualfun(pShape p) { p->pshow(); } void main() { Circle circle; Square square; //虚函数初始化 circle.p.pshow=showCircle; square.p.pshow=showSquare; //用基类指针指向派生类 pShape p1=(pShape)&circle; pShape p2=(pShape)□ //传递基类指针,体现多态。 virtualfun(p1); virtualfun(p2); }
4.求问unix下如何实现后台挂
多谢lgg201指教
本题答案如下:kill -s SIGSTOP pid
lgg201回复如下
编写如下php脚本
<?php while ( $i ++ < 100 ) { error_log('msg: ' . $i . chr(10), 3, '/tmp/t.log'); sleep(1); }
保存为t.php
1. 开启终端t1, 在t1中执行:
$ php t.php
2. 开启终端t2, 在t2中执行:
tail -f /tmp/t.log
输出如下:
msg: 1
msg: 2
msg: 3
msg: 4
3. 在t2中键入: Ctrl + c, 终止tail的查看进程.
4. 在t2中执行
$ ps -ef | grep t.php
输出:
501 7050 4703 0 5:38PM ttys006 0:00.02 /usr/local/php-5.3.5-fpm/bin/php.dSYM t.php
5. 在t2中向t.php的进程发送SIGSTOP信号, 执行:
$ kill -s SIGSTOP 7050
6. 在t2中用tail再次查看日志文件
tail -f /tmp/t.log
本次不会持续打印消息
7. 在t2中发送SIGCONT信号给t.php进程
$ kill -s SIGCONT 7050
8. 再次用tail查看日志文件
tail -f /tmp/t.log
此时又开始持续打印
关于这些可以查看手册
man bash
查找JOB CONTROL一节
相关信号:http://www.linuxso.com/command/kill_3.html
5.求问nohup ./command 2>&1 >./log.txt & 会存在什么问题,不知道这个命令记得对不对,谢谢