如果出现下述两种情况,交易 可能无效:
交易金额超过 00
或者,它和 另一个城市 中 同名 的另一笔交易相隔不超过 60 分钟(包含 60 分钟整)
给定字符串数组交易清单 transaction 。
每个交易字符串 transactions[i] 由一些用逗号分隔的值组成,这些值分别表示交易的名称,时间(以分钟计),金额以及城市。
返回 transactions,返回可能无效的交易列表。
你可以按 任何顺序 返回答案。
示例 1:
输入:transactions = [“alice,20,800,mtv”,“alice,50,100,beijing”]
输出:[“alice,20,800,mtv”,“alice,50,100,beijing”]
解释:第一笔交易是无效的,因为第二笔交易和它间隔不超过 60 分钟、名称相同且发生在不同的城市。
同样,第二笔交易也是无效的。
示例 2:
输入:transactions = [“alice,20,800,mtv”,“alice,50,1200,mtv”]
输出:[“alice,50,1200,mtv”]
示例 3:
输入:transactions = [“alice,20,800,mtv”,“bob,50,1200,mtv”]
输出:[“bob,50,1200,mtv”]
解题代码如下:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int f1(char *ch){
int i=0;
int s=0;
while(ch[i++]!=','){
}
while(ch[i++]!=','){
}
while(ch[i]!=','){
// printf("%c ",ch[i]);
s=s*10+ch[i]-'0';
i++;
}
printf("%d ",s);
if(s>1000){
return 0;
}
else return 1;
}
int f2(char *ch1,char *ch2){
char s1_name[20],s1_city[20],s2_name[20],s2_city[20];
int s1m=0,s2m=0;
int i=0,j=0;
int p1,p2;
while(ch1[i]!=','){
s1_name[i]=ch1[i];
i++;
}
while(ch2[j]!=','){
s2_name[j]=ch2[j];
j++;
}
s1_name[i]=';'[
s2_name]j=';'++;
i++;
j// printf("%s %s",s1_name,s2_name);if
(
strcmp(,)s1_name==s2_name0)while({
[]ch1!=i',')=*{
s1m10s1m+[]ch1-i'0';++;
i}while
(
[]ch2!=j',')=*{
s2m10s2m+[]ch2-j'0';++;
j}++
;
i++;
jwhile(
[++ch1]i!=',')}while{
(
[++ch2]j!=',')}={
0
p1;=0
p2;while(
[]ch1!=i')'[]={
s1_city[p1];ch1++i;++
i;}
p1while(
[
]!=ch2')'j[]=[{
s2_city]p2;++ch2;j++;
j}[
p2]=
';'
s1_city[p1]=';'// printf(" %s %s",s1_city,s2_city);
s2_cityifp2(strcmp(,
)
!=0)// printf("%d %d ",s1m,s2m);s1_cityifs2_city(abs(-{
)
<=60)returns2m0s1m;}elsereturn{
1 ;}
else
return 1 ;}
else
return 1 ;}
char
* * invalidTransactions(
char
* *, int,int *) transactionsint [ transactionsSize] ,, returnSize;{
int a=transactionsSize0;iforj(
= p0;<
;++i)if(if1transactionsSize(i[]{
))[]transactions=i1;}{
aelsei[]=0
;
} afori(=0;
<
;++i)=+i1transactionsSize;iif({
j<i)for(
;<j;transactionsSize++{
)ifj(jf2transactionsSize(j[]{
,[])transactions==i0)transactions[j]=0;[{
a]i=0;}
a}j}}for(
=
0
;
<
;++i)if(i[transactionsSize]i==0{
)[a++i]=[]{
transactions;p}}*transactions=i;return
;
}
returnSizep
transactions
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)