滴滴出行两道编程题代码

第一题只有70%,是递归导致超时
import java.util.Scanner;

public class Main {
	public static int ans = Integer.MIN_VALUE;
	public static void func(int start, int end, int next, int count, int[][] list, int listflag)
	{
		for(int i=next;i<listflag;i++)
		{
			if(list[i][0] >= start)
			{
				count++;
				func(list[i][1]+1, end, next+1, count, list, listflag);
				count--;
			}
		}
		if(count > ans)
		{
			ans = count;
		}
	}

	public static void main(String[] args) {
	 Scanner scan = new Scanner(System.in);
	 int n = scan.nextInt();
	 int[] nums = new int[n];
	 for(int i=0;i<n;i++)
	 {
		 nums[i] = scan.nextInt();
	 }
	 int[][] list = new int[n][2];
	 int listflag = 0;
	 for(int i=0;i<n;i++)
	 {
		 int temp = nums[i];
		 if(temp == 0)
		 {
			list[listflag][0] = i;
			list[listflag][1] = i;
			listflag++;
			continue;
		 }
		 for(int j=i+1;j<n;j++)
		 {
			 temp ^= nums[j];
			 if(temp == 0)
			 {
				 list[listflag][0] = i;
				 list[listflag][1] = j;
				 listflag++;
				 break;
			 }
		 }
	 }
	 /********得到最大的区间数********/
	 func(0, n-1, 0, 0, list, listflag);
	 System.out.println(ans);
	}
}
第二题丑数剑指offer原题 AC 100%

#include<stdio.h>
/*****丑数****/
/*
* 得到三个数中的最小值
*/
int getThreeMostMinFlag(int num1, int num2, int num3)
{
	int min = num1 < num2 ? num1 : num2;
	min = min < num3 ? min : num3;
	return min;
}
/*
* 得到第n个丑数
*/
int getNthUglyNumber(int n)
{
   int* uglyNums = new int[n];
   uglyNums[0] = 1;
   int nextUgly = 1;

   int multiply2 = 0;//当前由乘2得出的最大丑数
   int multiply3 = 0;//当前由乘3得出的最大丑数
   int multiply5 = 0;//当前由乘5得出的最大丑数
   while(nextUgly < n)
   {
        int min = getThreeMostMinFlag(uglyNums[multiply2]*2, uglyNums[multiply3]*3, uglyNums[multiply5]*5);
		uglyNums[nextUgly] = min;
	    while(uglyNums[multiply2]*2 <= uglyNums[nextUgly])
		{
             multiply2++;
		}
		while(uglyNums[multiply3]*3 <= uglyNums[nextUgly])
		{
             multiply3++;
		}
		while(uglyNums[multiply5]*5 <= uglyNums[nextUgly])
		{
             multiply5++;
		}
		nextUgly++;
   }
   int ugly = uglyNums[nextUgly - 1];
   delete [] uglyNums;
   return ugly;
}
int main()
{
    int n;
    scanf("%d", &n);
    int ugly = getNthUglyNumber(n);
	printf("%d", ugly);
}

全部评论
你这一个JAVA一个C++。。。很强势啊
点赞 回复 分享
发布于 2017-09-10 17:33
能去面试吗,能收到除了拒绝外的其他通知吗
点赞 回复 分享
发布于 2017-09-10 18:20

相关推荐

不愿透露姓名的神秘牛友
07-09 11:15
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务