猿辅导笔试

这个第一题组队的题,我一直0,实在想不到自己的逻辑哪里出问题了,请教一下各位大佬
老哥们,知道问题在哪里里,是贪心陷阱
比如 2 2 2 2 2,组队数是3
第一轮(1 1 1)->1 1 1 2 2
第二轮(1 1 1)->1 1 0 1 1
第三轮(1 1   1)->0 0 0 0 1

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;
class Solution {
public:
	int findAnagrams(vector<int>& nums, int k) {
		
        sort(nums.begin(), nums.end());
        int res = 0;
		//[l-p.size()+1,l]区间内判断是或否与p anagram 有k个元素
		for (int r = 0; r < nums.size(); r++) {
			int l = r - k + 1;
            if(l>=0 && nums[l]<=0)
                continue;
            //长度等于k,这样下一轮就有p.size()个值
			if (l >= 0){
                int js = nums[l];
                res += js;
                for(int i=l; i<=l+2; i++){
                    nums[i] -= js;
                }   
            }
            // cout << r <<":" <<endl;
            // cout << l <<" "<<endl;
            // printVec (nums);
		}
		return res;
	}
};

int main() {
    int c;
    cin >> c;
    int n, num;
    for(int i=0; i<c; i++){
        vector<int> nums;
        cin >> n;
        for(int j=0; j<n; j++){
            cin >> num;
            nums.push_back(num);
        }
        int res = Solution().findAnagrams(nums, 3);
        cout << res <<endl;
    }
	return 0;
}


#猿辅导##笔试题目#
全部评论
这个不是排序,去重输出就行了嘛
点赞 回复 分享
发布于 2019-08-24 17:34
一直是0,浪费了好长时间调试,还是0,猿辅导是不是太坑了
点赞 回复 分享
发布于 2019-08-24 17:34
这题,我也始终是0,我太难了
点赞 回复 分享
发布于 2019-08-24 17:35
我也是0 public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); int[][] a=new int[n][]; int[] result=new int[n]; int m=0; for(int i=0;i<n;i++) { m=input.nextInt(); a[i]=new int[m]; for(int j=0;j<m;j++) { a[i][j]=input.nextInt(); } Arrays.sort(a[i]); for(int j=0;j<m-2;j++) { if(a[i][j]==0) { continue; } a[i][a[i].length-1]-=a[i][j]; a[i][a[i].length-2]-=a[i][j]; result[i]+=a[i][j]; a[i][j]-=a[i][j]; Arrays.sort(a[i]); } } for(int i=0;i<n;i++) { System.out.println(result[i]); } }
点赞 回复 分享
发布于 2019-08-24 17:36
import heapq num = int(input().strip()) result = [] for i in range(num):     temp = [int(x) for x in input().strip().split(' ')]     if temp[0]<3:         result.append(0)     else:         res = []         tp = []         temp = temp[1:]         temp.sort()         for x in temp:             if x > 0:                 heapq.heappush(tp, -x)         while(len(tp)>=3):             x1 = heapq.heappop(tp)             x2 = heapq.heappop(tp)             x3 = heapq.heappop(tp)             res.append(-x3)             x1-=x3             x2-=x3             if x1<0:                 heapq.heappush(tp, x1)             if x2<0:                 heapq.heappush(tp, x2)         result.append(sum(res)) for x in result:     print(x) 同求
点赞 回复 分享
发布于 2019-08-24 17:36
好吧,我已经发现问题了😣
点赞 回复 分享
发布于 2019-08-24 17:40
老哥们,2 2 2 2 2,能组的队数是3😂
点赞 回复 分享
发布于 2019-08-24 17:41
是不是每次只能减1
点赞 回复 分享
发布于 2019-08-24 17:49
题目也理解错了,哎不给个好点的样例,都没看懂题目
点赞 回复 分享
发布于 2019-08-24 18:58
我也一直是0,查了好久,觉得自己的逻辑没有问题,自己在本地测试的时候,也都是正确的,提交就是0,,,,,所以 ,,,,,我在想难道是时空的复杂度超出了题目的要求吗??
点赞 回复 分享
发布于 2019-08-24 19:40

相关推荐

02-08 15:53
门头沟学院 Java
CoderEcho:让公司知道便宜没好货
点赞 评论 收藏
分享
02-01 19:48
门头沟学院 Java
神哥了不得:(非引流)直接暑期吧,没时间日常了,老鱼简历把水印去了,或者换个模板,简历字体大小都不太行,建议换2个高质量的项目,面试应该还会再多一些
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客企业服务