a*****s 发帖数: 1121 | 1 public ArrayList groupSwap(ArrayList str, int i, int j){
int p1=0;
int p2=str.size()-1;
//first consider boundary condition 1 all belongs to group 1
while(Integer.parseInt(str.get(p1).toString())%2==1 && p1
p1++;
}
//then consider boundary condition 2 all belongs to group2
while(Integer.parseInt(str.get(p2).toString())%2==0 && p1
p2--;
}
if(p1==p2) return str;
//nor... 阅读全帖 |
|
p****e 发帖数: 3548 | 2 #include
using namespace std;
string find2char(const string & s){
size_t size = s.size();
if(size <= 2) return s.substr(0, size);
vector index(256, -1);
int maxlen = 1, len, p1 = 0, p2 = 0, pm_begin = 0;
index[s[0]] = 0;
for(int i=1; i < size; ++i){
if(index[s[i]] >= 0){
index[s[i]] = i;
continue;
}
index[s[i]] = i;
p2 = i;
break;
}
if(p2 == 0) return s.substr(pm_begin, size);
max... 阅读全帖 |
|
t******n 发帖数: 2939 | 3 ☆─────────────────────────────────────☆
l63 (l63) 于 (Thu Jul 4 01:01:50 2013, 美东) 提到:
转子知乎: http://www.zhihu.com/question/21262930
一个关于数学归纳法的悖论问题:到底是第N天有N个红眼睛自杀,还是什么都不会发生?
此问题最早据说是澳大利亚的华裔数学神童陶哲轩在网上贴出来让大家思考,逗大家玩
儿的。但却是真的把我难住了,一直百思不得其解。在此求教方家。
题目是这样的。说一个岛上有100个人,其中有5个红眼睛,95个蓝眼睛。这个岛有三个
奇怪的宗教规则。
1. 他们不能照镜子,不能看自己眼睛的颜色。
2. 他们不能告诉别人对方的眼睛是什么颜色。
3. 一旦有人知道了自己是红眼睛,他就必须在当天夜里自杀。
某天,有个旅行者到了这个岛上。由于不知道这里的规矩,所以他在和全岛人一起狂欢
的时候,不留神就说了一句话:【你们这里有红眼睛的人。】
最后的问题是:假设这个岛上的人足够聪明,每个人都可以做出缜密的逻辑推理。请问
这个岛上将会发生什么?
此问题的第一个... 阅读全帖 |
|
l***i 发帖数: 1309 | 4 Strategy
S1: choose person P1. p = 1/3
S2: skip P1, choose the first among P2 and P3 that is higher than P1.
p = p(P2) + p(P3) = 1/3 + 1/6 = 1/2
p(P2) = p(P2 is best among P1,P2)*p(best is in P1,P2) = 1/2*2/3 = 1/3
p(P3) = p(P1 is best among P1,P2)*p(P3 is best in P1,P2,P3) * p(best is in
P1,P2,P3) = 1/2 * 1/3 * 1 = 1/6
S3: skip P1,P2, and choose P3.
p = 1/3 because we have only one choice which is P3. |
|
s*******f 发帖数: 1114 | 5 // 打印从棋盘的一个角落到另一个角落所有路径
// this is toooooo hard, seems NP hard. cannot be DP
// if chess can only go right or down, here it is
struct Point{
int x;
int y;
Point(int xx, int yy):x(xx),y(yy){ };
friend bool operator== (Point &p1, Point &p2);
};
bool operator== (Point &p1, Point &p2){
return p1.x == p2.x && p1.y == p2.y;
}
void PrintPoint(Point &p){
printf("(%d, %d)", p.x, p.y);
}
void PrintAllChessPath(Point &p1, Point &p2){
static vector path;
path.push_back... 阅读全帖 |
|
s*******f 发帖数: 1114 | 6 // 打印从棋盘的一个角落到另一个角落所有路径
// this is toooooo hard, seems NP hard. cannot be DP
// if chess can only go right or down, here it is
struct Point{
int x;
int y;
Point(int xx, int yy):x(xx),y(yy){ };
friend bool operator== (Point &p1, Point &p2);
};
bool operator== (Point &p1, Point &p2){
return p1.x == p2.x && p1.y == p2.y;
}
void PrintPoint(Point &p){
printf("(%d, %d)", p.x, p.y);
}
void PrintAllChessPath(Point &p1, Point &p2){
static vector path;
path.push_back... 阅读全帖 |
|
w***o 发帖数: 109 | 7 首先,为什么一定会相遇。假设p1是慢指针(每次走一步),p2是快指针(每次走两步
),c是环的起始点,也就是我们要找的点,并且假设环的长度是n。只要有环,p1迟早
要进入环,我们考虑p1进入环以后的情况。在p1完成一圈以前,p2必然超过p1一次。因
为p1完成一圈需要n步,而p2在这段时间内则走了2n步。那么我们考虑p2超越p1时的情
况。假设在这一步p1从节点a移到了节点b。如果p2要不想在节点b与p1相遇而超越b的话
,必然只能在节点a开始往前跳,因为p2每次只移动两步。而它如果从a开始的话,实际
上它们在上一步就已经相遇了。所以,p1和p2必然相遇。
第二点,如何找到c。假设从链表起点到c的距离是k1,从c到相遇点b的距离是k2。相遇
时,p1走了k1 + k2步,p2走了k1 + k2 + cn(c是一个大于0的整数,如果k1很长,而n
很短的话,p2在相遇之前可能已经空转了好几圈)。由于p2速度是p1速度的两倍,我们
有:
2 * (k1 + k2) = k1 + k2 + cn => k1 + k2 = cn
我们要求k1,所以
K1 = cn – ... 阅读全帖 |
|
j*******n 发帖数: 10 | 8 不是你说的思路, merge 时候修改score的 只有当第二个array 比第一个大的时候
下面代码看了就肯定明白了,就是merge sort 多了一行,每个元素只扫描一次
void merge(vector &racers, int low, int mid, int high)
{
int p1 = low;
int p2 = mid+1;
vector tmp(high-low+1);
int k=0;
while(p1<=mid || p2<=high){
if(p1>mid || (p1<=mid && p2<=high && racers[p2]->end < racers[p1]->end
)){
tmp[k] = racers[p2];
p2++;
}else if (p2>high || (p1<=mid && p2<=high && racers[p2]->end > racers[
p1]->end) ) {
tmp... 阅读全帖 |
|
a*****f 发帖数: 6 | 9 leetcode上ValidNumber这道题有点烦,因为它的需求不明确
试了很多次,下面的代码通过了测试,供参考
public class Solution {
enum Token {Empty, Sign, Float, Int, IntWithSign, Invalid};
int findFirst(char[] s, char c, int p1, int p2) {
for (int i = p1; i <= p2; i ++)
if (s[i] == c) return i;
return -1;
}
int findLast(char[] s, char c, int p1, int p2) {
for (int i = p2; i >= p1; i --)
if (s[i] == c) return i;
return -1;
}
Tok... 阅读全帖 |
|
c*****m 发帖数: 271 | 10 楼主题目没有描述清楚,看完你的解答才明白完整的题意是什么。我感觉更好的答案是
并查集和树的结合。peer用并查集表示(一个集合里面的都是peer),manager关系用
树的结构表示。构建过程中先用(manager,A,B)先构建树结构;然后再用(peer,A,C)构建
并查集结构(在树中有父结点的是并查集的root)。is_peer(a,b)要么a,b在一个并查
集中,要么两个所属的并查集有相同的manager。is_manager(a,b)就递归地找了。自己
写的测试用例过了,如有不对请指正
class People:
def __init__(self, name):
self.name = name
#parent in tree to represent employee-manager info,
#tree_parent is manager of this person
self.tree_parent = None
#parent in union-find group
... 阅读全帖 |
|
t******n 发帖数: 2939 | 11 ☆─────────────────────────────────────☆
firearasi (firearasi) 于 (Thu May 23 18:10:13 2013, 美东) 提到:
1. 假设p1=2,p2=3,...,pn 是全部的素数...
2. 令 N=p1*p2*...*pn+1, 显然 N比 p1,p2,...,pn都大,因此不再p1,p2,..,pn,中, 所
以根据1, N是一个合数.
3. N是合数,那么必然能够被一个素数整除, 根据1, 所有的素数是p1,..., pn, 所以必
然有其中之一, 比如pj, 能整除N, 特别的, N 除以pj余数为0
4. N= pj*(p2*...*pn 括号内排除pj)+1=pj*something+1, 因此, N除以pj余数为1
5. 3 和 4 矛盾,N不能同时除以pj余0,而且余1.
现在有几种推理方法
6(I), 3和4矛盾, 矛盾的根源在于 假设1 是完全错误的, 于是 证毕,素数无穷 Q.E.D
或者走下列路线(l63路线)
6(II), 3和4矛盾的一个最近的根源来自于第3部的N是合数, ... 阅读全帖 |
|
c****b 发帖数: 265 | 12 女人的性向是很敏感的啊!!!!!P2看了P1一眼立马就站住了啊!!!!!眼睛炯炯
有神啊!!!!!!
P1好涵养啊!!!!就很平静的回望过去啊!!!!!!
P2开口了啊!!!!也很装啊!!!!刚刚的凄凄惨惨戚戚全没有了啊!!!!!笑靥
如花啊!!!!
P2说这个姐姐好漂亮啊!!!介绍认识一下嘛!!!!!
认识你妹啊!!!!漂亮的就要介绍给你认识啊?!!!!美女都被你们祸害了啊!!
!留一两个给我们宅男啊!!!!
但是哥还是很紧张啊!!!!这种场面我hold不住啊!!!!他妈的每次导演都不给我
剧本啊!!!总是让我临场发挥啊!!!老子不是科班出身的啊!!!!老子没那么好
的心理素质啊!!!!!
不过和两个影后,不对,现在应该是一个影D一个影后了!!!!!!!
和一个影D一个影后飙戏很刺激啊!!!!你永远不知道她们下一句会说神马啊!!!
!!
T说,这是我男朋友的姐姐!!!!!!
姐姐啊!!!!
姐姐啊!!!!
姐姐啊!!!!
卧槽啊!!!!!!T你有没有搞错啊!!!!!你不断刷新着我的极限啊!!!!我
家的家庭成员现在都能被你随意增加了啊!!!!!!你给我变个儿子出来玩一下好不
好啊!!... 阅读全帖 |
|
f***a 发帖数: 329 | 13 回来了回来了。
重新想了下,这个其实就是在一堆iid variables之间加了一个constraint。貌似
sample起来不难。
以最简单的n=2,m=1为例:
Without constraint, outputs space is {(0,0),(0,1),(1,0),(1,1)}.
The corresponding probability space is {(1-p1)*(1-p2), ..., p1*p2}.
With constraint, outputs space is O={(0,1),(1,0)}.
The corresponding probability space is P={(1-p1)*(p2), p1*(1-p2)}.
Under the constrain, standardize the probability space into
P.std={P1/(P1+P2),P2/(P1+P2)}.
Then under constrain, output (0,1) has the probability P1/(P1+P2) to be
sam... 阅读全帖 |
|
f***a 发帖数: 329 | 14 回来了回来了。
重新想了下,这个其实就是在一堆iid variables之间加了一个constraint。貌似
sample起来不难。
以最简单的n=2,m=1为例:
Without constraint, outputs space is {(0,0),(0,1),(1,0),(1,1)}.
The corresponding probability space is {(1-p1)*(1-p2), ..., p1*p2}.
With constraint, outputs space is O={(0,1),(1,0)}.
The corresponding probability space is P={(1-p1)*(p2), p1*(1-p2)}.
Under the constrain, standardize the probability space into
P.std={P1/(P1+P2),P2/(P1+P2)}.
Then under constrain, output (0,1) has the probability P1/(P1+P2) to be
sam... 阅读全帖 |
|
发帖数: 1 | 15 支持转基因的搞调查,结论:研究生以上学历反对转基因比例最高!
2018-03-05 15:29:09 来源:知识分子综合 作者:佚名
点击:191 评论: 0(查看)
0
吕永岩按语:这是出于推广转基因搞的抽样调查,尽管这个调查与网上公开调查百
分之九十以上中国人反对转基因的数据相差甚远,但研究生以上高学历的人反对转基因
比例最高还是狠狠打了转基因利益集团的脸。转基因利益集团一再宣称抵制转基因的人
没文化,不懂科学。他们调查的难以掩饰的结果却是学历越高,越认为转基因有害,越
反对转基因。事实胜于雄辩。转基因因为本质的不安全,只能越抹越黑,谁也无法洗白。
►崔凯在转基因食品360度论坛上演讲
前言
2016年和2017年,江南大学食品工程博士崔凯及其团队在中国完成了覆盖大陆全部
31个省市自治区的关于“中国公众对转基因食品的认知”的社会调查,详细的学术论文
Public perception of GM foods: A national study of Chinese Knowledge and
opinion已被Nature旗下的Science of Food收... 阅读全帖 |
|
K******g 发帖数: 1870 | 16 一个更简单的办法:
1)排序,从小到大
2)两个指针,p1 points to the first element, and the p2 points to the
largest element.
3)If *p1+*p2 > 100, all numbers from *p1 to *(p2-1) can have such a
combination with *p2. Then --p2. repeat.
4) if *p1+*p2 <= 100, put a third pointer p3 from p1+1, binary search a value so that *p3>100-(*p1+*p2). Then any number between p3 and p2 together p1 are such as combination. then ++p1, repeat.
5) repeat until p1 and p2 meet.
the total complexity will be O(nlogn).
each
m) |
|
t*****j 发帖数: 1105 | 17 char c_str[] = "Reverse_this_String";
char* p1, char* p2;
p1 = p2 = c_str;
while (*p2 != ‘\0’)
{
p2++;
}
p2--;
char c;
while (p1
{
c = *p1;
*p1 = *p2;
*p2 = c;
p1++;
p2--;
} |
|
t*****j 发帖数: 1105 | 18 char c_str[] = "Reverse_this_String";
char* p1, char* p2;
p1 = p2 = c_str;
while (*p2 != ‘\0’)
{
p2++;
}
p2--;
char c;
while (p1
{
c = *p1;
*p1 = *p2;
*p2 = c;
p1++;
p2--;
} |
|
d*********i 发帖数: 628 | 19 ls的这个例子,如果先移动p2,那不就return false了?
照lz的例子:
p1 = 1
p2 = 1
p3 = 1
移动p2:
p1=1; p2=1;p3=1;
继续移动p2:
p1=1; p2=1;p3=1;
继续移动p2:
p1=1; p2=2;p3=1;
return false
是这个意思吗?怎么判断该移动p1,or p2? |
|
i**********e 发帖数: 1145 | 20 1)要是我的话会给个简单的递归思路,如果面试官要求的话再转换成非递归。
string part(string A) {
int n = A.length();
if (n <= 2) return A;
string prefix;
prefix += A[0];
prefix += A[n-1];
return prefix + part(A.substr(1, n-2));
}
2)in place merge two lists 可能有点 tricky,但我加了个 prev 指针可以稍微简
洁些。不知道还有没有更简洁的方法。
Node *mergeTwoLists(Node *head1, Node *head2) {
Node *p1 = head1, *p2 = head2;
Node *head = NULL;
Node *prev = NULL;
while (p1 || p2) {
int n1 = (p1 ? p1->data : INT_MAX);
int n2 = (p2 ? p2->data : INT_M... 阅读全帖 |
|
A******g 发帖数: 612 | 21 过不了,请大牛看看, 我在本地测试过好像没问题啊
----------------------------------------------
public class Solution {
public RandomListNode copyRandomList(RandomListNode head) {
if (head==null) return null;
RandomListNode p = head;
while (p != null) {
RandomListNode newNode = new RandomListNode(p.label);
newNode.next = p.next;
p.next = newNode;
p = newNode.next;
}
p = head;
RandomListNode p2 = head.next;
... 阅读全帖 |
|
s********x 发帖数: 914 | 22 public static Node sortLinkedList(Node l) {
if (l == null) {
return null;
}
if (l.getNext() == null) {
return l;
}
Node mid = findMid(l);
Node firstHalf = l, secondHalf = mid;
firstHalf = sortLinkedList(firstHalf);
secondHalf = sortLinkedList(secondHalf);
return mergeTwoSortedLists(firstHalf, secondHalf);
}
private static Node findMid(Node l)
{
Node fast = l... 阅读全帖 |
|
w********s 发帖数: 1570 | 23 我试过人家什么dp的算法也就比我的n3解法差不多快。
关键是这个虽然是on3,但没有除法,没有浮点,只有整数,速度不慢。
bool online(const Point& p1, const Point& p2, const Point& p3)
{
int dy1 = p2.y - p1.y;
int dy2 = p3.y - p2.y;
int dx1 = p2.x - p1.x;
int dx2 = p3.x - p2.x;
if (dy1 * dx2 == dy2 * dx1) return true;
return false;
}
int maxPoints(vector &points) {
int s = points.size();
if (s < 3) return s;
int max = 1;
... 阅读全帖 |
|
a***e 发帖数: 413 | 24 http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt
不知道啊,但好像是可以得。我是觉得这种写法很简单, 比起同样的naive matching
char *strStr(const char *haystack, const char *needle) {
// if needle is empty return the full string
if (!*needle) return (char*) haystack;
const char *p1;
const char *p2;
const char *p1_advance = haystack;
for (p2 = &needle[1]; *p2; ++p2) {
p1_advance++; // advance p1_advance M-1 times
}
for (p1 = haystack; *p1_advance; p1_advance++) {
char *p1_old = (char*) p1;
p2 = needle;
while (*p1... 阅读全帖 |
|
W*********y 发帖数: 481 | 25 两个指针都从0开始
vector findGapC(vector &A)
{
int p1 = 0, p2 = 1, len = A.size();
vector ret;
if(len<2) return ret;
while(p1
if(A[p2] - A[p1] == C){
ret.push_back(A[p1]);
ret.push_back(A[p2]);
return ret;
}
else if(A[p2] - A[p1]
else if(A[p2] - A[p1]>C) p1++;
if(p2==p1) p2 = p1+1;
}
return ret;
}
0
. |
|
a*****a 发帖数: 46 | 26 ”而要求的丑陋数就是从已经生成的序列中取出来的“,那个7不在已经生成的序列里
面。
比如已经生成的序列是a=[1]
然后用三个数字代表2、3、5的index,那么p2 = 0, p3 = 0, p5 = 0;
然后算出来min(a[p2]*2, a[p3] * 3, a[p5] * 5),就是选出来的下一个数字,这个地
方是2,
a = [1,2], p2 = 1, p3 = 0, p5 = 0
a = [1,2,3], p2 = 1, p3 = 1, p5 = 0
a = [1,2,3,4], p2 = 2, p3 = 1, p5 = 0
a = [1,2,3,4,5], p2 = 2, p3 = 1, p5 = 1 // a[p2] * 2 == a[p3] * 3
a = [1,2,3,4,5,6], p2 = 3, p3 = 2, p5 = 1
a = [1,2,3,4,5,6,8], p2 = 4, p3 = 2, p5 = 1 |
|
s****h 发帖数: 3979 | 27 CREATE TABLE Match
(
player1 integer,
player2 integer,
score varchar(10)
)
CREATE TABLE Players
(
ID integer,
name varchar(10)
)
insert into Match
values
( 3, 2, '3:1'),
( 2, 1, '3:1'),
( 3, 1, '3:1'),
( 1, 2, '3:1'),
( 1, 3, '3:1'),
( 2, 3, '3:1')
insert into Players
values (1, 'A'),
(2, 'B'),
(3, 'C')
declare @P1 integer
declare @P2 integer
set @P1 = 1;
set @P2 = 3;
select P1.name, P2.name, M.score
from Match M
join Players P1 on P1.id = M.player1
join Players p2 on P2.id = M.player2
where (P1... 阅读全帖 |
|
z****e 发帖数: 2024 | 28 or if you really want to get screen command line input as source, and you
want " " as delimiter.
string s1;
vector vstr;
getline(cin,s1);//command line input
size_t p1=0;
size_t p2=0;
while( (p2=s1.find_first_of(" ",p2)) != string::npos){
cout<
vstr.push_back(s1.substr(p1, p2-p1));
p2=s1.find_first_not_of(" ",p2);
p1=p2;
}
vstr.push_back(s1.substr(p1,p2-p1));//read the last string |
|
t******e 发帖数: 1293 | 29 http://www.careercup.com/question?id=296729
Give two parking locations P1 and P2, P1 and P2 both have n slots. n-1 cars
with same IDs are parked in n-1 slots in both P1 and P2. Design an algorithm
to let n-1 cars in P1 and P2 park in the same slots
看了小尾羊的回复,还是没有很清楚。
首先题目的意思不是很明确,我的理解是每次只能动一辆车,只能把车移动空位上去。
以下面的例子为例
P1: 1 3 _ 4 2 5 先把 _ 移动最后 --> P1: 1 3 4 2 5 _
P2: 2 5 1 4 _ 3 --> P2: 2 5 1 4 3 _
分别对P1和P2进行qsort,假设_的取值等于(n+1)/2 + 0.5,也就是3.5,这样,我们分
别对P1和P2扫描并且交换,一趟之后,分别如下:
P1: 1 3 2 |
|
f****a 发帖数: 4708 | 30 /* 若采用局部变量 p2 表示_arr第二个元素的引用,可以:*/
int*& p2 = (_arr[1]); // not [2]
/* 问题:若p2不是局部变量,而是全局变量,也就是在说 p2 在函数体外部已经
声明为 int* p2 了,请问这时如何采用 p2 来表示_arr第二个元素的引用 ??? */
Can't be a reference. For the value of the 2nd element:
int * p2;
p2 = _arr[1]; |
|
i**********e 发帖数: 1145 | 31 No need suffix tree or any advanced data structure. No need dynamic
programming. All you need is two pointers,
iterating through the pattern and string at the same time. Need to take
extra care for special cases.
I have wrote the code below:
bool match(const char *str, const char *pattern) {
const char *p1 = pattern, *p2 = str;
if (*p1 && *p1 != '*' && *p1 != *p2)
return false;
while (*p1) {
while (*p1 == '*')
p1++;
if (!*p1) return true;
while (*p2 && *p1 != *p2)
... 阅读全帖 |
|
l***i 发帖数: 1309 | 32 来自主题: JobHunting版 - 问一道老题 use hellobruce's idea, here is code
assume input is a[N] and difference is K
typedef pair pii;
// small keeps track of min while p1 is moving to right
// large keeps track of max while p1 is moving to right
deque small, large;
int p1, p2;
int ans=0, curr=0;
small.clear(); large.clear();
for(p1=p2=0; p2
{
int val = a[p2];
while(!small.empty() && val > small.front().first + K)
{
p1=small.front().second +1;
small.pop_front();
}
while(!large.empty() && val < ... 阅读全帖 |
|
h****n 发帖数: 1093 | 33 我特意跑了一下程序
void foo(int *p1, int val1, int val2)
{
int j;
int *p2, *p3;
int * buf1 = (int*)malloc(sizeof(int)*20);
for(int j =0;j<20;j++)
buf1[j] = 1;
p2 = (int *)buf1;
//val1放到0x12fec8地址也就是当前p2指针指向的位置
*p2 = val1;
//把p1指向val1地址所指向的位置
p1 = (int *)*p2;
for (int i=1; i<10; i++)
{
p2 = (int *)buf1;
*p2 = val1;
p3 = (int *)*p2;
val1+=sizeof(int);
*p3 = val2;
}
printf("buf1:");
for(j =0;j<20;j++)
... 阅读全帖 |
|
f*****e 发帖数: 2992 | 34 nqueen leetcode 20ms 算慢还是快?nqueen II 300ms
class Solution {
public:
void f(int n, int j, int *p1, int *p2, int *p3, vector >&
vvs){
for(int i = 0; i < n; i++){
if( p1[i] < j || p2[j + i] < j || p3[n - 1 + j - i ] < j) continue;
else {
p1[i] = j;
p2[j + i] = j;
p3[n - 1 + j - i] = j;
if(j == n - 1){
vector vs(n);
string temp(n,'.');
for(int k = 0; k < n; k++){
temp[k] = 'Q';
... 阅读全帖 |
|
f**********3 发帖数: 295 | 35 public class Solution {
public ListNode sortList(ListNode head) {
if (head == null || head.next == null) return head;
ListNode tail = head.next;
while (tail.next != null) {tail = tail.next;}
HeadTail ret = sort(head, tail);
return ret.head;
}
class HeadTail {
ListNode head;
ListNode tail;
public HeadTail(ListNode head, ListNode tail) {
this.head = head;
this.tail = tail;
}
}
... 阅读全帖 |
|
o****i 发帖数: 1706 | 36 我写的是
/**
* Definition for a point.
* class Point {
* int x;
* int y;
* Point() { x = 0; y = 0; }
* Point(int a, int b) { x = a; y = b; }
* }
*/
public class Solution {
public int maxPoints(Point[] points) {
Point p1 = new Point();
Point p2 = new Point();
int maxCount = 0;
if(points.length == 1){
return 1;
}
for(int i=0;i
boolean isSame = true;
p1 = points[i];
... 阅读全帖 |
|
C********e 发帖数: 492 | 37 public double findMedianSortedArrays(int A[], int B[]) {
int len = A.length + B.length;
if (len % 2 == 1) {
return findKthSortedArrays(A, B, len / 2 + 1, 0, 0);
} else {
int left = findKthSortedArrays(A, B, len / 2, 0, 0);
int right = findKthSortedArrays(A, B, len / 2 + 1, 0, 0);
return (left + right) * 1.0 / 2;
}
}
private int findKthSortedArrays(int A[], int B[], int k, int startA, int
startB) {
... 阅读全帖 |
|
a******1 发帖数: 36 | 38 mm是学文科吧,你这样想很正常。俺老公可是地地道道理科出身,他老大建个目标函数
应该是举手之劳吧。
好吧看大家对油卡很有兴趣,就交待一下,我加了一个每个月交一点钱的plan可以定期
买定额打折的giftcard。我的叫leisureplus,也是误打误撞成了会员,后来也懒得取
消了,每个月8块钱。好像在giftcard版大家加入的都是不要钱的,有兴趣可以去问一
问。
回到数学模型,油卡是八折买的,用信用卡买油有5% cashback, 假设每个月消耗的油
是固定不变的设为C。油卡总面值设为a,信用卡买油总额设为b;用油卡买时油价为p1,
用信用卡买时油价为p2。
约束条件:
a/p1+ b/p2 = C; (1)
目标函数:
Min(0.8a+0.95b) (2)
把(1)代如(2),化简得:
0.8*a+0.95(p2*C-(p2/p1)*a)
因为C总是大于a(月耗油总量大于可用油卡买油的量),定性的看一下,p2在第二项中占
的权重大于所以p2
个倒数,可以看看最到底a和C和p1什么关系时有最优解。 |
|
m**d 发帖数: 21441 | 39 心理学说大部分人的性取向都是界于两个极端之间的双性恋
那么我们可以把这个理论再推广下:gay的心理状态也可以处在0和1之间的很多中间状态
,比如0.1 0.2 0.3....
于是~~~任意一个gay的心理状态可以普遍的写成
φ=(A1*|1> + A2*|0>)
|1>代表攻,|0>代表受...
A1 A2是两个数字,相对比例表示此gay的状态处于哪个中间状态
例如,0.1*|1> + 0.9*|0>就表示10%的成分是攻,90%的成分是受.... [注1]
φ则称为"波函数"
尽管某个gay的心理状态可以处于中间
但是,一旦发生"实际的测量",那么此gay的"实际状态"将要么是1,要么是0
(省略关于"实际的测量"的邪恶定义N字...请自行YY)
这就是传说中的波函数坍缩~~
用量子力学的语言就是"波函数坍缩指的是某些量子力学体系与外界发生某些作用后波
函数发生突变,变为其中一个本征态"(from wiki)
如果攻的成分越大(φ表达式里A1的值相对A2越大),那么实际表现为攻的概率也就越大,
这就是"波函数的概率诠释"
现在让我们想象有两个gay,A和B
为了方便,我们用符号... 阅读全帖 |
|
m*****r 发帖数: 37 | 40 我是最近刚转Java的弱弱,有几个小问题,请牛牛们轻拍。
这次转java,总算像是某位说的那样,原来c++转java也就分分钟的事儿。写得顺的时
候,边google边写,也可以写得稀里糊涂、腾云架雾、行云流水;可问题是bug一出现
,立马歇菜!比如,min stack, stack1.peek()==stack2.peek(),顶上的两个数字明明
是相等的,为什么会return false呢?想去google都不知道该搜什么。。。等把java刷
一遍lc就算我可以写java了?
我有个function, public boolean dfdjdf(){return dfkld;} 为什么它一定要我在最
后一句话加个return啊,方法里的逻辑到那一步早就应该已经return了啊?
还有就是,刷lc搭了个local的架,本来没什么心理障碍,可是每遇到有Node,
ListNode, TreeNode的题就一股无名火,我不知道该把这些定义的类塞到哪里?试过两
种:
public class getIntersectionNode {
public class ListNode {
... 阅读全帖 |
|
|
a******g 发帖数: 725 | 42 工程师关于可靠性管理一般印象局限于对飞机维护方案的修改,其实恢复机队可靠性的
方法很多,新疆公司举几个涉及ATR-72飞机发动机(PW127F)比较典型的例子:
一.创新ATR-72飞机发动机监控方法。
南航新疆公司自1997年引进5架ATR-72飞机投入运营后,由于新疆地区运营环境
相对恶劣以及ATR-72飞机发动机本身设计的原因,装机的PW127F发动机可靠性较差,严
重威胁ATR-72机队的飞行安全;另外因频繁吊发并且修理周期较长,导致ATR-72飞机因
缺发而长时间停场。
新疆公司急需能够监控ATR-72飞机起飞ITT裕度(发动机最重要的监控参数)的软
件,但是普惠加拿大发动机制造公司答复曾经尝试开发过类似的软件,但是由于软件输
出数据紊乱没有实用价值而中断。新疆公司根据PW127F发动机的维护经验,总结出1个
描述发动机起飞状态涡轮间温度和压力高度、机场场温函数关系的公式;2个空气动力
学公式,以及飞机和发动机参数的筛选条件,委托北京科研一所开发出了ATR-72飞机发
动机起飞状态监控软件。该软件每天自动筛选数据并计算后输出曲线或修正后的数据,
对比历史... 阅读全帖 |
|
r***e 发帖数: 21 | 43 多谢分享面经,其实面试感觉不好,也不一定结果不好,继续加油啦。
不考虑树的平衡,贴个简陋的伪代码,欢迎拍砖,
// 返回root节点指针
Node *insert_BST(Node *pT, Node *pInserted) {
Node *p1 = pT;
Node *p2 = 0;
while( p1 ) {
p2 = p1;
if ( pInserted->key < p1->key )
p1 = p1->leftChild;
else
p1 = p1->rightChild;
}
// if Node has parent pointer
pInserted->parent = p2;
if ( !p2 ) { // empty tree
return pInserted;
} else {
if ( pInserted->key < p2->key )
p2->leftChild = pInserted;
else
p2->rightChild = |
|
i*****e 发帖数: 113 | 44 1.5) a[0..n], 夹挤定理
ext:
定义三个指针,第一个最慢,两个逐渐增大
如果超过,则移动第一个指针,其他两个往小的方向移动
以此类推
1.6) E1 = Sigma(1..N)
S1 = Sigma(a[1..N+1])
X = S1 - E1
ext:
X+Y = S1 - E1
E2 = Sigma(1^2..N^2)
S2 = Sigma(a[1^2..(N+2)^2)
X^2+Y^2 = S2 - E2
3.a)
node_t *p1 = head, *p2 = head;
int n = N;
while (n-- && p2->next) {
p2 = p2->next;
}
while (p2->next) {
p1 = p1->next;
p2 = p2->next;
}
return p1; |
|
r*******n 发帖数: 3020 | 45 10
input: all_poly = set(p1, p2, p3, ..., pn)
p is a given poly.
output: minimum poly that contain p.
step1:
result = set()
for each in all_poly:
if each contain p:
then put it in result.
step2:
Since any p1, p2 in result, either p1 contain p2 or p2 contain p1
take any two polys, assume p1 and p2,
if p1 contain p2, then remove p1 out of result,
otherwise remove p2 out of result.
until there is only one poly in result,
return that.
two steps all can be done with divide ... 阅读全帖 |
|
n*******s 发帖数: 482 | 46 来自主题: JobHunting版 - 一到电面题 Node* partial_reverse(Node* head){
Node* headnew=head;
Node* p1 = head;
if(p1==NULL) return NULL;
Node* p2 = head->next;
Node* pre=NULL;
while(p2!=NULL){
if(headnew==head)
headnew = p2;
else
pre->next = p2;
p1->next = p2->next;
p2->next = p1;
pre = p1;
p1 = p1->next;
if(p1!=NULL)
p2 = p1->next;
else
break;
}
return headnew;
} |
|
i**********e 发帖数: 1145 | 47 来自主题: JobHunting版 - 一到电面题 Gate:
很好!递归的确在某些情况可以更简单解决。
另外,guitarnerd 的代码有 bug,没有处理特殊状况。
这让我想起这道链表题,比这题还要更 tricky 些:
You are given two linked lists representing two non-negative numbers. The
digits are stored in reverse order and each of their nodes contain a single
digit. Add the two numbers and return it as a linked list.
你可以在这里输入你的代码,网站会自动以大量测试数据来检测你是否答对。你可以试
试看能不能第一次写就答对。
http://www.ihas1337code.com/onlinejudge
以下是我的递归与非递归的解法。
Iterative:
void reversePairsOfLinkList(Node *& head) {
if (!head) return;
Node *p1 = head;... 阅读全帖 |
|
p*****2 发帖数: 21240 | 48
import java.io.*;
import java.util.*;
public class test
{
public static void main(String[] args)
{
new test().run();
}
PrintWriter out = null;
void run()
{
Scanner in = new Scanner(System.in);
out = new PrintWriter(System.out);
int[] values = new int[]
{ 1, 4, 5, 6, 3 };
Node head = null;
Node prev = null;
for (int i : values)
{
Node node = new Node(i);
if (head == null)
... 阅读全帖 |
|
c********s 发帖数: 817 | 49 刚面了Jane Street。 硬币 flipping 问题
一个fair的硬币,0.5 head,0.5 tail。两个players, P1 and P2. P1 抛五次,P2抛
四次。如果P2抛到是头的次数大于或等于P1抛到是头的次数,P2就赢。问P2赢的概率是
多少。
我是这么做的:
Let P(H_P1=X) be P1有X次是头的概率,and P(H_P2=X) be P2有X次是头的概率.
Then P(H_P1=X)= 0.5^5 * (5 choose X), P(H_P2=X)= 0.5^4 * (4 choose X
)。
Then
P2赢的概率 =
P(H_P2=4)* (\sum_{i=0}^{4} P(H_P1=i))
+
P(H_P2=3)* (\sum_{i=0}^{3} P(H_P1=i))
+
P(H_P2=2)* (\sum_{i=0}^{2} P(H_P1=i))
+
P(H_P2=1)* (\sum_{i=0}^{1} P(H_P1=i))
+
P(H_P2=0)* (\sum_{i=0}^{0} P(H_P1=i))
最后算了等于 255/5... 阅读全帖 |
|
j******n 发帖数: 287 | 50 since the coin is fair, P(P2抛到是头的次数大于或等于P1抛到是头的次数) = P(P2
抛到是tail的次数大于或等于P1抛到是tail的次数) and P(P2抛到是头的次数大于或等
于P1抛到是头的次数) + P(P2抛到是头的次数
是tail的次数大于或等于P1抛到是tail的次数) = P(P2抛到是头的次数
次数)
so P(P2抛到是头的次数大于或等于P1抛到是头的次数) = 0.5
率.
X |
|