23.07.02疯狂游戏 游戏开发实习生 研发岗笔试

7.2 疯狂游戏 游戏开发实习生 研发岗笔试

编程题:

  1. (20分)输入k和target,k在数组里,那么2k+1或者3k+1也在数组里,问数组中有无等于target的数,若有则输出true,没有则输出false
  2. (30分)输入width和一个vector像图数组,输出按照垂直翻转的像素图,4个数表示一个像素点大概要求的输入输出效果如下输入:2,[1,2,3,4,2,2,2,2,3,3,3,3,4,4,4,4]输出:[2,2,2,2,1,2,3,4,4,4,4,4,3,3,3,3]

主观题:

(50分)

讲述一下你参与制作过的一款游戏:

  1. 制作的技术点
  2. 时间复杂度/空间复杂度的分析
  3. 应用到了什么设计模式
  4. 设计上有什么不足,相应的解决方案?都是产生的不足了怎么会解决(
  5. 遇到了什么挑战

编程题提交的代码:

1.通过85.71%(题面完全没给数的范围,所以负数有可能要特殊处理?后来加了dfs2也没过最后一个点)

class Solution {
public:
    int t;
    bool flag=0;
    void dfs(int x)
    {
        if(x>t||flag==1) return;
        if(x==t)
        {
            flag=1;
            return;
        }
        if((t-1)%2==0) dfs(x*2+1);
        if((t-1)%3==0) dfs(x*3+1);
        return;
    }
    void dfs2(int x)
    {
        if(x<t||flag==1) return;
        if(x==t)
        {
            flag=1;
            return;
        }
        dfs(x*2+1);
        dfs(x*3+1);
        return;
    }
    bool kInArray(int k, int target)
    {
        t=target;
        if(k<0&&t<0) dfs2(k);
        else dfs(k);
        if(flag==1) return 1;
        return 0;
    }
};

2.通过100%

class Solution {
public:
    vector<int> flipImage(int width, vector<int>& pixels)
    {
        int a[width*4+1];
        vector<int> v;
        for(int i=0;i<pixels.size();i++)
        {
            a[i%(width*4)]=pixels[i];
            if((i+1)%(width*4)==0)
            {
                for(int j=width;j>=1;j--)
                {
                    for(int k=(j-1)*4;k<=(j-1)*4+3;k++)
                        v.push_back(a[k]);
                }
            }
        }
        return v;
    }
};

全部评论
请问大佬收到面试了吗
1 回复 分享
发布于 2023-07-23 11:20 广东
第一题的判断感觉得用t/2>k
点赞 回复 分享
发布于 2023-07-20 12:32 陕西
后续还有面试么大佬
点赞 回复 分享
发布于 2023-07-23 11:39 北京
void dfs2(int x) { if(x
点赞 回复 分享
发布于 2023-09-10 11:25 辽宁
逆向解更快 public static boolean method1(int k, double target) { if (k > 0 && target < 0) { return false; } if (target == k) { return true; } else { double tmp = (target - 1) / 2; if (tmp % 1 != 0) { return false; } return method1(k, tmp); } }
点赞 回复 分享
发布于 03-02 19:57 北京
class Solution { template<typename com=""> bool dfs(int k, const int& target, const Com& com) { if (k == target) return true; else if (com(k, target)) return false; else { if ((k!=2*k+1)&&dfs(2 * k + 1, target, com)) return true; if ((k!=3*k+1)&&dfs(3 * k + 1, target, com)) return true; return false; } } public: bool kInArray(int k, int target) { if (k >= 0) return dfs(k, target, std::greater<int>()); else return dfs(k,target,std::less<int>()); } }; 当测试用例为[-1,-4]的时候楼主的dfs2会过不了,存在死递归</int></int></typename>
点赞 回复 分享
发布于 04-16 19:12 重庆
我做的也是这套题
点赞 回复 分享
发布于 05-26 11:43 北京

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
7 36 评论
分享
牛客网
牛客企业服务