Code Jam Kickstart 2018 Round G 题解

这轮kickstart是自己认真参加的,但是一题也没做出T T;讲道理每次的第一题是最简单的,应该可以作出,但是这次的题目,还是算法写错了,没关系,赛后复盘总结下;

 

Problem A : Product Triplets

https://code.google.com/codejam/contest/5374486/dashboard#s=p0&a=0

 

题意:

即在一个数组中找到至少满足下面三个条件之一的三元组(x,y,z)

  • Ax = Ay × Az, and/or
  • Ay = Ax × Az, and/or
  • Az = Ax × Ay

 

分析:

是一道搜索题,暴力搜索O(n^3)

我的算法使用set记录,O(n^2),但是有的case没通过;错的原因应该是没有考虑清楚重复的情况,比如数值相同,但下标不同,也算不同的三元组的情况;

另外我没想到可以先排序

 

解法:

因为会存在重复的数,那么可以使用map来记录重复的数,可以把时间复杂度降低到o(n^2)

伪代码:

 

posted @ 2018-10-22 10:12  shawshawwan  阅读(548)  评论(0编辑  收藏  举报