百度算法岗笔试-0329

投的是2022的暑期实习 计算机视觉算法研发工程师实习生
笔试编程两道题 全部AC
第一题:最长回文串01(leetcode : 5类似)
解题思路:中心扩展法求解最长回文串,分别以一个字符为中心和两个字符为中心,然后选择其中最长的那个
注意的点:这个题如果是 11111 or 000 返回0 所以有一个判断需要判断是否全为一样的值
代码:
#include <bits/stdc++.h>
using namespace std;
/*
1、回文串 判断
2、最长子串
3、双指针 中心扩展法 
找回文串的难点在于,回文串的的长度可能是奇数也可能是偶数,
解决该问题的核心是从中心向两端扩散的双指针技巧。
*/


// 在 s 中寻找以 s[l] 和 s[r] 为中心的最长回文串
string palindrome(string &s, int l, int r) {
    // 防止索引越界 并且还要是回文  
    while (l >= 0 && r < s.length() && s[l] == s[r]) {
        // 双指针,向两边展开  
        l--; r++;
    }
    // 返回以 s[l] 和 s[r] 为中心的最长回文串
    // 这里要注意 l和r都是越界了的才会跳出while 所以 要把 l拉回界内 然后返回 r-l长度的子串 
    return s.substr(l+1, r-1-l);
    }

string longestPalindrome(string s) {
    string res = "";
    for (int i = 0; i < s.length(); i++) {
        // 以 s[i] 为中心的最长回文子串
        string s1 = palindrome(s, i, i);
        // 以 s[i] 和 s[i+1] 为中心的最长回文子串
        string s2 = palindrome(s, i, i + 1);
        // res = longest(res, s1, s2)
        res = res.length() > s1.length() ? res : s1;
        res = res.length() > s2.length() ? res : s2;
    }
    return res;
}
int main(){
	string s;
	string ans;
	cin>>s; //输入一个 字符串s
	map<char,int> mp; // 统计01出现的个数
	int len = s.size();
	for(int i=0; i<len; i++){
		mp[s[i]]++;
	}
    // 如果0/1出现的次数和字符串长度一样那就输出0 返回
	if(mp[s[0]]==len){
		cout<<0;
		return 0;
	}
	ans = longestPalindrome(s);
	cout<<ans<<endl;
	
	return 0;
} 
第二题:礼物组合 (原题原题原题 去年百度就考了)
礼物分为a,b两个品种。组合的方式包括两种,一种是组合里有x件a类礼物加y件b类礼物,一种是组合里有x件b类礼物加y件a类礼物。求组合数最多
输入abxy 分别表示a的数量b的数量x和y的值
解题思路:贪心 大的-大的 小的-小的 直到a或b的数量为0
#include <bits/stdc++.h>
using namespace std;

int main(){
 
    int a, b, x, y;
    cin >> a >> b >> x >> y;
 
	long long int ans=0;
	// 大-大 小-小 
	
	while(a && b){
		// a始终是大的 
		if(a<b){
			int temp = a;
			a = b;
			b = temp;
		}
		// x始终是大的 
		if(x<y){
			int temp = x;
			x = y;
			y = temp;
		}
		
		a = a-x;
		b = b-y;
		
		ans++; 
		
		 
	} 
	cout<<ans;
 
 
    return 0;
}


   

#百度笔试##实习##笔试题目#
全部评论
t2贴一个O(logn)解法: 显然,最大值为(a + b) // (x + y),下面对0到(a + b) // (x + y)二分check最大值max是否可以由max得到答案。 首先特判x=y的情况,max为min(a, b) // x。 设二分过程中的值为m,则可以由m得到答案(*)等价于存在m1使得m1*x+(m-m1)*y<=a 且 m1*y+(m-m1)*x<=b,分x>y和x<y讨论,解上面两个不等式得到m1的上界right和下界left,对right向下取整,对left向上取整,则(*)等价于left<=right 且left<=m且right>=0。 import math a, b, x, y = map(int,input().split(' &(5528)#39;)) if x == y:     print(min(a, b) // x) else:     l, r = 0, (a + b) // (x + y)     while  l <= r:         mid = (l + r ) // 2         if x > y:             left, right = (b - mid * x)/(y - x), (a - mid * y)/(x - y)         else:             right, left = (b - mid * x)/(y - x), (a - mid * y)/(x - y)         right, left = math.floor(right), math.ceil(left)         if left <= right and mid >= left and 0 <= right:             l = mid + 1         else:             r = mid - 1     print(r)
1 回复 分享
发布于 2022-03-29 22:35
百度编程题相对还简单一些
1 回复 分享
发布于 2022-03-29 21:09
老哥,方便透露一下算法岗笔试有什么题吗?需要怎么准备吗?
点赞 回复 分享
发布于 2022-04-09 20:38
贴一个自己的解法 nums = [int(i) for i in input().split()]         a = nums[0]         b = nums[1]         x = nums[2]         y = nums[3]         count = 0         while a >= 0 and b >= 0:             if a >= b:                 a, b = b, a              if x >= y:                 x, y = y, x              if b >= y and a >= x:                 b -= y                 a -= x                 count += 1             else:                 break         print(count)
点赞 回复 分享
发布于 2022-03-29 23:05
这数据也太弱了,t1 O(n^3)能过, t2 O(n)能过
点赞 回复 分享
发布于 2022-03-29 22:26
只A了第一道,第二道dp了半天过了9%😪
点赞 回复 分享
发布于 2022-03-29 21:39
第二题10**9能过?
点赞 回复 分享
发布于 2022-03-29 21:19
编程AC了,选择直接炸裂
点赞 回复 分享
发布于 2022-03-29 21:15
py超时了。好难过😓
点赞 回复 分享
发布于 2022-03-29 21:14
可是选择题也太难了……
点赞 回复 分享
发布于 2022-03-29 21:09
第二题可否当做线性规划整数解问题来做
点赞 回复 分享
发布于 2022-03-29 21:09
太强了,呜呜呜
点赞 回复 分享
发布于 2022-03-29 21:08

相关推荐

已oc&nbsp;云智断更了好几天,也有一些话想说,继续更新一篇云智timeline&nbsp;4.18&nbsp;一面&nbsp;半个小时后约二面&nbsp;4.21二面&nbsp;当晚&nbsp;约hr面&nbsp;4.23hr面&nbsp;4.30&nbsp;发offer之前美团的二面挂了,进入人才库,后面又被捞起来面试,4.30号&nbsp;美团又一面,现在还没出一面结果感觉也不报什么希望,就算一面过了,还有二面,我经不起深入拷打,唉,真的,好难五一躺平了五天,吃吃玩玩睡睡~还要担心毕业,科研更是难,唉暑期可能就到此为止了,后面没有时间在这个上面了,要抓紧时间做科研,为了后面能出去实习。大厂,秋招再见!!!有一些感慨:4.1是我的第一次面试,美团,面试的时候紧张到浑身发...
daisy9542:我今晚也是美团一面,已经第六次了。我也面了其他的,没拿到 offer。但我想开了,要按照自己的节奏来,找暑期转正然后秋招大杀四方并不是唯一的出路,其实还有很多选择的,有 0 实习最后秋招拿 offer 了,也有不选择互联网去国企的外企的,考编的,创业的。现在的失败不代表以后的路都是黑暗的,只不过可能运气还没降临到头上。所以现在要做的,就是放平心态,提升自己,通过面试了解到自己的优点和不足,争取下次机会来了能好好抓住
点赞 评论 收藏
分享
04-09 09:47
门头沟学院 Java
Arbelite_:2-3k,这工资还不如去摇奶茶
点赞 评论 收藏
分享
04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
评论
5
21
分享

创作者周榜

更多
牛客网
牛客企业服务