发帖数: 1 | 1 小白路过,学习了。
第一题是leetcode 271道.
public class Solution {
public String serialize(List strs) {
if (strs == null) return null;
StringBuffer ret = new StringBuffer();
for (String s : strs) ret.append(s.replace("#", "##")).append(" # ");
return ret.toString();
}
public List deserialize(String s) {
if (s == null) return null;
List ret = new ArrayList();
String[] array = s.split(" # ", -1);
for (int i = 0; ... 阅读全帖 |
|
L******k 发帖数: 395 | 2 my solution:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
void jf_eval(string& in_line, unordered_map
>>& record)
{
int i_dex = in_line.find_first_of(' ');
string cur_var = in_line.substr(0, i_dex);
vector varibles;
int cur_value = 0, ele = 0;
bool new_variable = true, new_number = true; int index1 = 0;
int i = i_dex... 阅读全帖 |
|
j*****n 发帖数: 23 | 3 #include
#include
#include
#include
#include
#include
#include
using namespace std; //这个最好解释一下不会真的在production上这么写
void jf_eval(string& in_line, unordered_map
//jf 是什么意思?
>>& record)
{
int i_dex = in_line.find_first_of(' ');
string cur_var = in_line.substr(0, i_dex);
vector varibles;
int cur_value = 0, ele = 0;
bool new_variable = true, new_number = true; int ... 阅读全帖 |
|
k****r 发帖数: 807 | 4 目测的话,我想用recursive+backtrack
分情况的, 我简单写了下,请指正
bool matchwords(char* word1, char* word2, int index1, int index2) {
if (index1 == strlen(word1)&& index2 == strlen(word2)) return true;
else {
if (word2[index2] == '*') {
if (matchwords(word1, word2, index1+1, index2+1)) return true;
else if (matchwords(word1, word2, index1+1, index2)) return true;
else if (word2[index2] == '?') {
return matchwords(word1, word2, index1+1, index2+1);
else {
... 阅读全帖 |
|
p*y 发帖数: 108 | 5 店面是两个中国人,一开始知道是国人还比较欣喜. 结果证明完全不是这么回事,反而感
觉很严格,最终挂了. 请大家分析下为啥挂? 难道第二题没有按面试官心中理想的答案
在面试时给他写出来? 以后看来一定要注意时间.
1. two sum
一开始根据题目理解以为是排好序的数组, 于是从两头开始找:
boolean twoSum(int[] nums, int sum){
if(nums==null || nums.length<2)
return false;
int low = 0, high = nums.length-1;
while(low
if( (nums[low]+nums[high]) == sum ){
return true;
}else if((nums[low]+nums[high]) < sum){
low++;
}else{
... 阅读全帖 |
|
a*****n 发帖数: 230 | 6 I have been waiting for this for 10 years. But this noon, I saw this line:
The byte code compiler and interpreter now include new instructions that
allow many scalar subsetting and assignment and scalar arithmetic operations
to be handled more efficiently. This can result in significant performance
improvements in scalar numerical code.
I immediately downloaded the latest R build and benchmark against a KD-tree
code I wrote.
R Build from 20 days ago: 8.45 minutes
R build of today: 5.01 minutes
A... 阅读全帖 |
|
w****x 发帖数: 2483 | 7 //Print strings with certain prefix in a sorted string array
void GetIndex(const char* strs[], int nBeg, int nEnd, char chr, int nPos,
OUT int& index1, int& index2);
void PrintComPrefix(const char* strs[], int n, const char* szPre)
{
assert(strs && szPre && n > 0);
const char* p = szPre;
int nIndex1 = 0;
int nIndex2 = n-1;
while (*p != 0 && nIndex1 >= 0)
{
GetIndex(strs, nIndex1, nIndex2, *p, p-szPre, nIndex1, nIndex2);
p++;
}
if (nIndex1 >= 0 ... 阅读全帖 |
|
w****x 发帖数: 2483 | 8 //Print strings with certain prefix in a sorted string array
void GetIndex(const char* strs[], int nBeg, int nEnd, char chr, int nPos,
OUT int& index1, int& index2);
void PrintComPrefix(const char* strs[], int n, const char* szPre)
{
assert(strs && szPre && n > 0);
const char* p = szPre;
int nIndex1 = 0;
int nIndex2 = n-1;
while (*p != 0 && nIndex1 >= 0)
{
GetIndex(strs, nIndex1, nIndex2, *p, p-szPre, nIndex1, nIndex2);
p++;
}
if (nIndex1 >= 0 ... 阅读全帖 |
|
l****c 发帖数: 782 | 9 写的蠢了点,但是也算是个思路吧,面试官
int compareVersion(string s1, int index1, string s2, int index2) {
//if s1 is larger, return 1, if s2 is larger return 2, else return 0
if (index1 < s1.size() && index2 < s2.size()) {
int tmpIndex1 = index1;
int prev1 = 0;
while (tmpIndex1 < s1.size()&&s1[tmpIndex1]!='.') {
int cur = (int)(s1[tmpIndex1] - '0');
prev1 = prev1*10 + cur;
tmpIndex1++;
}
int prev2 = 0;
int tmpIndex2 = index... 阅读全帖 |
|
f********4 发帖数: 988 | 10 如果你同意sum >= 0是有解的,而且题目说了是唯一解。那么你找到的那个index,从
这个index出发,一直到array的尾部,每一项subSum都是大于0的,这个你肯定同意,
如果不是的话,就不会返回这个index。那么接下来就到了这个index的前半部分,你怎
么证明前半部分每一项subSum 都是大于0的,因为如果每一项大于0,那index就是解。
假设前面加到某一项的时候,设为index1,subSum小于0了,那根据sum大于等于0,也
就是说从这之后的subSum加起来是大于0的(因为从index到array的尾部一直到index1相
加的subsum是小于0的,满足sum大于0,index1到index之间的subsum一定大于0)。那么
这样index1就会成为index那个返回的点,因为index1不是index,所以没有这样的点。 |
|
j*****u 发帖数: 1133 | 11 bool F(string s, char ch1, char ch2, int n)
{
if (string.IsNullOrEmpty(s) || n <= 0 || ch1 == ch2)
throw new ArgumentException();
var index1 = new List();
var index2 = new List();
for (int i = 0; i < s.Length; i++)
{
if (s[i] == ch1)
index1.Add(i);
else if (s[i] == ch2)
index2.Add(i);
}
int minDist = int.MaxValue;
int i1 = 0, i2 = 0;
while (i1 < index1.Count && i2 < index2.Count)
{
int diff ... 阅读全帖 |
|
j*****u 发帖数: 1133 | 12 bool F(string s, char ch1, char ch2, int n)
{
if (string.IsNullOrEmpty(s) || n <= 0 || ch1 == ch2)
throw new ArgumentException();
var index1 = new List();
var index2 = new List();
for (int i = 0; i < s.Length; i++)
{
if (s[i] == ch1)
index1.Add(i);
else if (s[i] == ch2)
index2.Add(i);
}
int minDist = int.MaxValue;
int i1 = 0, i2 = 0;
while (i1 < index1.Count && i2 < index2.Count)
{
int diff ... 阅读全帖 |
|
s********x 发帖数: 81 | 13 大家好,最近做了两题leetcode, 但是都遇到了run time error. 但是我遇到run time
error 的例子在别的c++编译器上都顺利通过了,请大家帮我看一下是什么问题. 谢谢
大家!
问题一:next permutation:
class Solution {
public:
int findSecondMax(vector &num, int cur){
int max1=-1, max2=-2;
int index1=-1, index2=-2;
for(int i=cur; i
if(max1
max2=max1;
index2=index1;
max1=num[i];
index1=i;
}
}
if(max2!=-2 || max2!=-1) return index2;
else return index1;
}
... 阅读全帖 |
|
c*******r 发帖数: 610 | 14 伪代码:
//assume both words appear at least once in the input
int index1 = -1;
int index2 = -1;
int min_dist = INT_MIN;
for i = 0 to words.size()
if words[i]= word1
index1 = i;
if words[i] = word2
index2 = i;
if (index1 != -1 && index2 !=-1)
min_dist = min(min_dist, abs(index1 -index2);
return min_dist;
lolhaha大牛是这个意思么? |
|
c*******r 发帖数: 610 | 15 伪代码:
//assume both words appear at least once in the input
int index1 = -1;
int index2 = -1;
int min_dist = INT_MAX;
for i = 0 to words.size()
if words[i]= word1
index1 = i;
if words[i] = word2
index2 = i;
if (index1 != -1 && index2 !=-1)
min_dist = min(min_dist, abs(index1 -index2);
return min_dist;
lolhaha大牛是这个意思么? |
|
s*******m 发帖数: 228 | 16 怎么写这么长
int index1 = -1;
int index2 = -1;
int min_dist = INT_MAX;
for i = 0 to words.size()
if words[i]= word1
index1 = i;
if words[i] = word2
index2 = i;
if (index1 != -1 && index2 !=-1)
min_dist = min(min_dist, abs(index1 -index2);
return min_dist;
应该很简单的 |
|
q**j 发帖数: 10612 | 17 这个index for intersect还是有用的。我经常会遇到重复的value。这时可以根据需要
再来一个index。
用你的例子:
如果
vec1 <- c(1,23,32,44,5,76,69,8,1,69)
index1 <- 1:length(vec1)
names(index1) <- vec1
index1[as.character(vec)]
这样就取不出来第二个叫69的column了。很有意思。
index1[c("69","69","69")]
把第一个取了三遍。
puzzling ... |
|
s*****n 发帖数: 2174 | 18 用我之前说的第一个方法就可以啊. 第二个方法和第一个方法的不同, 是对于顺序的保
留. 第一种方法给出的index是保序的, 第二个方法给出的index是无序的. 这有点像排
列和组合的区别, 看你具体要哪种了.
> vec1 <- c(1, 5, 7, 9, 12, 3)
> vec2 <- c(9, 8, 7)
> vec <- intersect(vec1, vec2)
> index1 <- 1:length(vec1)
> names(index1) <- vec1
> index1[as.character(vec)]
7 9
3 4
> index2 <- 1:length(vec2)
> names(index2) <- vec2
> index2[as.character(vec)]
7 9
3 1
> vec1[index1[as.character(vec)]]
[1] 7 9
> vec2[index2[as.character(vec)]]
[1] 7 9 |
|
c********t 发帖数: 5706 | 19 研究了一下你的codes, 很不错。不过最后的时候这句
find(result.begin(), result.end(), tmp)
又给复杂度*一个result.size(), 比如你给的例子[3, 6,2, 7, 4, 5]。result就是n^2
级的排列组合。
仔细又想了想,你试试把最后改成下面的,看行不行
for (j = begin; j <=end; j++){
if (twoSum[j].index1<=twoSum[i].index2) continue;
vector tmp;
tmp.push_back( num[ twoSum[i].index1] );
tmp.push_back( num[ twoSum[i].index2] );
tmp.push_back( num[ twoSum[j].index1] );
tmp.push_... 阅读全帖 |
|
c********t 发帖数: 5706 | 20 研究了一下你的codes, 很不错。不过最后的时候这句
find(result.begin(), result.end(), tmp)
又给复杂度*一个result.size(), 比如你给的例子[3, 6,2, 7, 4, 5]。result就是n^2
级的排列组合。
仔细又想了想,你试试把最后改成下面的,看行不行
for (j = begin; j <=end; j++){
if (twoSum[j].index1<=twoSum[i].index2) continue;
vector tmp;
tmp.push_back( num[ twoSum[i].index1] );
tmp.push_back( num[ twoSum[i].index2] );
tmp.push_back( num[ twoSum[j].index1] );
tmp.push_... 阅读全帖 |
|
N*****8 发帖数: 253 | 21 1). 从右往左找第一个a[i-1] < a[i]的,记i-1为index1;
2). 从右往左找第一个比a[index1]大的数,记index2;
3). swap(a, index1, index2);
4). reverse(a, index+1, a.length-1) |
|
y****n 发帖数: 743 | 22 O(n), 不知道有没有bug。
头尾两个index,头部发现偶数就与尾部发现奇数对换。直到头尾的index接触。
此时,奇偶的顺序已经调整完毕,需要恢复原来数据顺序。
从发现第一个偶数的位置与碰触点之间的数据反转。
从碰触点到尾部最后一个奇数位置之间的数据反转。
至此,原数据顺序恢复完毕。
public static void Swap(int[] arr, int index1, int index2)
{
int temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
public static int[] SortOddEven(int[] arr)
{
int indexOdd = 0;
int indexEven = arr.Length - 1;
int firstEven = 0;
while ((firstEven < arr.Length)&&(arr[firstEven] % 2 == 1))
firstEven ++;
int lastOdd = arr.Length - 1;
w... 阅读全帖 |
|
k******i 发帖数: 11 | 23 我之前也被面了这道题目, 当时面试官要求这个method会被call multiple times,
所以先用hashmap简历索引比较合理。
最小值的lookup可以做到worst case 0(n)。
假设两个word的index 序列是 int[] a, int[] b.
用两个index1, index2表示在各自序列中的位置。
一旦一个a[index1]的值大于b[index2], 继续增加index1不会得到小于当前最优的解(
consider a = [3,4], b = [1,2]),所以index2++
反之亦然,相互交替直到遍历完两个index数组。
hashmap初始化复杂度O(n)。
lookup复杂度O(a.length + b.length), worst case O(n)。 |
|
s*****n 发帖数: 2174 | 24 1. R里intersect函数可以给出c, 但是没有index信息. 如果你想得到index, 可以这样
做:
vec1 <- c(1,23,32,44,5,76,69,8)
vec2 <- c(2,4,6,7,8,9,1,3)
vec <- intersect(vec1, vec2)
index1 <- 1:length(vec1)
names(index1) <- vec1
index1[as.character(vec)] # 给出你要的第一个index
index2 <- 1:length(vec2)
names(index2) <- vec2
index2[as.character(vec)] # 给出你要的第二个index.
不过的个人认为, 不给出index是正确的, 因为集合的一个基本特性就是无序性. 你调
用intersect函数本身, 就隐含着把vector变成set这个步骤了. 如果matlab里给出交集
的index, 遇上vector1或者vector2里面有重复元素的情况怎么办?
2. 你问这个问题本身和这样生成数据集, 就说明你的SAS思想很重(pr |
|
i********s 发帖数: 133 | 25 the code for the 1st problem. assume A[0] <= B[0].
int findK(int *A, int *B,
unsigned int sizeA, unsigned int sizeB,
unsigned k)
{
if (sizeA == 0)
{
if (k < sizeB)
return B[k-1];
else
throw std::exception();
}
if (sizeB == 0)
{
if (k
return A[k-1];
else
throw std::exception();
}
unsigned int index1, index2;
index1 = std::min(k-1, sizeA-1);
index2 = 0;
|
|
d*****o 发帖数: 28 | 26 The Boundary case is here:
while (i1 < index1.Count && i2 < index2.Count)
for example:
i1 = 10, index1.count = 11, i2 = 11, index2.count = 16.
it is possible i2 - i1 < n (if n >= 2).
your code missed the case. |
|
d*****o 发帖数: 28 | 27 The Boundary case is here:
while (i1 < index1.Count && i2 < index2.Count)
for example:
i1 = 10, index1.count = 11, i2 = 11, index2.count = 16.
it is possible i2 - i1 < n (if n >= 2).
your code missed the case. |
|
|
j***3 发帖数: 142 | 29 请问main 里的这一段不是已经 考虑了new line的问题了吗,因为用window size 小于
行字符数时程序没有问题啊?
/** continue processing **/
while ((ch = getc(in)) != EOF)
{
/* remove contribution for nucleotide freq for first char */
index1 = indexMinus(win[0], &a, &c, &g, &t);
index2 = index(win[1]);
/* remove contribution for nucleotide freq for first char */
pair[index1][index2]--;
/* move things down in window */
for (i=0;i
if |
|
j***3 发帖数: 142 | 30 但是在 if 里面已经用ungetc push 了一次,在while 里又要 push一次吗?象这样:
/** continue processing **/
while ((ch = getc(in)) != EOF)
{
ungetc(ch, in);
/* remove contribution for nucleotide freq for first char */
index1 = indexMinus(win[0], &a, &c, &g, &t);
index2 = index(win[1]);
/* remove contribution for nucleotide freq for first char */
pair[index1][index2]--;
/* move things down in window */
for (i=0;i
|
|
q**j 发帖数: 10612 | 31 好了,好了。在你的帮助下总算是跌跌撞撞地算出了一个数来。很不好意思,最后两个
问题。
1. 在matlab里面有个 intersect函数,比如:
[c, index1, index2]= intersect[vector1, vector2]
可以给出交集: c。
和交集在各个vector的index: index1, index2.
请问R有没有类似的函数?
2. 比如我的头10个数据是蜜蜂的身高,体重,后十个数是猴子的身高,体重。
我如果用个cor()。只有一个结果。但是我想分别给蜜蜂和猴子算correlation。请问
如何做。其实就是SAS里面的By. |
|
q**j 发帖数: 10612 | 32 比如:
vector1 = c(1, 5, 7, 9, 12, 3)
vector2 = c(9, 8, 7)
common = intersect(vector1, vector2)
> common
[1] 7 9
在matlab里面会给你:
index1 = c(3,4)
index2 = c(3,1)
这样的效果是:
vector1[index1]=common
vector2[index2]=common
我在matlab里面经常来这么一下。R里面应该也可以自己写的。我想我还不熟。自己写
不出来吧。 |
|
s*****n 发帖数: 2174 | 33 还可以直接用match函数. 不过也无法"有序得返回重复元素".
vec1 <- c(1, 5, 7, 9, 12, 3)
vec2 <- c(9, 8, 7)
common <- intersect(vec1, vec2)
match(common, vec1)
match(common, vec2)
我觉得限定在向量的数据结构下, 有序得返回重复元素本身这个
就不太可能, 比如
a1 <- c(1,2,3,3)
a2 <- c(3,2)
那么交集就是 (2,3), 对应的index2 自然是 (2,1), 但是
对于 index1, 由于有重复元素, 怎么可能给出确定的index呢,
是返回第一个3对应的(2,3) 还是返回第二个3对应的(2,4)?
这时必然要假定永远选择第一个match, 或者最后一个match, 等等.
也就是说无法返回所有重复元素的坐标.
另一方面, 如果返回(2,3,4), 那又丧失了顺序信息, 因为a1如果
是(1,3,2,3), 也同样是返回(2,3,4)坐标. 也就是顺序是不保的.
我觉得你的要求, 必须返回这样的信息index1 = (2,(3,4 |
|
x**7 发帖数: 341 | 34 good
还可以直接用match函数. 不过也无法"有序得返回重复元素".
vec1 <- c(1, 5, 7, 9, 12, 3)
vec2 <- c(9, 8, 7)
common <- intersect(vec1, vec2)
match(common, vec1)
match(common, vec2)
我觉得限定在向量的数据结构下, 有序得返回重复元素本身这个
就不太可能, 比如
a1 <- c(1,2,3,3)
a2 <- c(3,2)
那么交集就是 (2,3), 对应的index2 自然是 (2,1), 但是
对于 index1, 由于有重复元素, 怎么可能给出确定的index呢,
是返回第一个3对应的(2,3) 还是返回第二个3对应的(2,4)?
这时必然要假定永远选择第一个match, 或者最后一个match, 等等.
也就是说无法返回所有重复元素的坐标.
另一方面, 如果返回(2,3,4), 那又丧失了顺序信息, 因为a1如果
是(1,3,2,3), 也同样是返回(2,3,4)坐标. 也就是顺序是不保的.
我觉得你的要求, 必须返回这样的信息index1 = ( |
|
q**j 发帖数: 10612 | 35 补充:
在matlab里面:
vec1=[1;2;3;3]
vec2=[3;2]
[common,index1,index2]=intersect(vec1,vec2)
common =
2
3
index1 =
2
4
index2 =
2
1
可以看出在有重复元素的情况下matlab by default, 给出最后一个matching position
。 |
|
|
|
g*****u 发帖数: 14294 | 38 Key highlights for the month:
- Hedge Funds posted a positive start to the year, as the Dow Jones Credit Suisse Hedge Fund index rose an estimated 0.55%. Six out of ten sectors posted positive performance for the month.
- Convertible Arbitrage funds were among the top performers for the month finishing up 2.22% as managers benefitted from a rise in convertible bond prices.
- The Event Driven sector continued to post positive performance in January due primarily to increased ... 阅读全帖 |
|
|
f*****e 发帖数: 939 | 40 作者:cui1212 文章发于:乌有之乡
66年到80年中国的经济数据,大家仔细看
今天进入中国共产党新闻网,进到中国共产党大事记,特意浏览了66年到80
年这几年的数据,(网址是http://cpc.people.com.cn/GB/64162/64164/index1.html ,大家可以去一观。)现把上面的一些内容贴出来,从下面的数据可以看出,只有两年是下降,其它都是增长,66年,工农业总产值2534亿元,76年,工农业总产值4536亿元。因此,不知道说十年文革,中国经济到了崩溃边缘时怎么来的.
中国共产党大事记·1966年
本年度国民经济状况:工农业总产值2534亿元,比上年增长17.3%。其中,农业总产值
910亿元,比上年增长8.6%,工业总产值1624亿元,比上年增长20.9%(以上按1957年
不变价格计算)。工农业产品产量:粮食,2.14亿吨,比上年增长10%;棉花,233.7万
吨,比上年增长11.6%;钢,1532万吨,比上年增长25.3%;原煤,2.52亿吨,比上年
增长8.6%;原油,1455万吨,比上年增长28.6%;天然气 |
|
|
A*V 发帖数: 3528 | 42 http://www.jsoh.org/index1.html
5/16只对DOD和学校的人开放。
大概只有EFV算新东西了。怎么又是蓝天使?我好像就没赶上过雷鸟。
Saturday 17 May
8 am Gates Open
9 - 10 am
Jill Long (Ragged Edge)
Skytypers (sponsored by Gieco)
10 - 1030 am
Opening Ceremony Featuring Guest Speakers:
Secretary of the Air Force Michael Wynne
German Ambassador to the United States
Ambassador Klaus Scharioth
Col (ret) Gail Halvorsen (The Candy Bomber)
1045 - 1200
Golden Knights Parachute Team (Army)
C-17 Demo (Air Force)
P-51 De |
|
|
|
w*********g 发帖数: 30882 | 45 中美大博弈:大戏上演
观世事如棋
一、中国加入WTO前的准备,朱总理改革的背景
你知道90年代中国有多困难吗?
我爸那时候干个体户,你知道税费有多高吗?国税、地税,再加上工商管理费,平
均每个月每家都要交好几百,大家都知道的,做粮食生意的旺季主要是午秋二季,平时
生意是不多的。可是午秋二季,额外的每家(国税、地税、工商管理费)每季上缴几千
块,你说说一个个体户赚的钱还能剩下多少?为了税费的事情,我家没少和收税收费人
员闹矛盾。不仅是我家,做个体户没有不对那些收税收费人员一肚子怨气的(其实那些
人也是一肚子苦水,因为他们是有指标有任务的,完不成任务是要受到批评和惩罚的)
。最严重的一次,我家歇业一年,因为我爸发现赚得没有上交的多,干脆不干了。
农民们哪像现在不仅不交税,还有补贴。那时候农民们也是被各种税费和摊派压弯
了腰。有句话就说那时的情况的,叫农民真苦,农村真穷,农业真危险。这不是一句假
话空话,而是关于三农最真实的描述。
再加上城市里国企改制,几百万工人下岗,财政赤字导致货币不得不增发,货币增
发又导致剧烈的通货膨胀。为了遏止通货膨胀,又不得不对市场实行行政管制。就拿粮
食来说,只... 阅读全帖 |
|
|
|
|
|