腾讯wxg前端实习代码面的一道背包问题,一起来做做?

微信小程序团队一共有 n 名成员,决定出去秋游,在海边遇到出租摩托艇的杰克马,马先生手上有 m 辆待出租的摩托艇,价格分别是 b1 b2 ... bm;

由于习惯了微信支付,团队中每个人身上的现金都有限,分别是 a1 a2 ... an,对了,一起出门的老板还带有 S 元的团队经费,这个经费是每个人都可以使用的


那么考虑以下两个场景


场景1

团队成员都很有爱,都愿意借钱给其他同事,那么这时候团队最多能租到多少摩托艇


function max( Array n, Array m, S) {

return num

}


场景2

团队成员都十分小气,是不愿意借钱给别人的,那么请考虑以下两个问题


//问题一 老板是否能想到一个策略,使得所有人都能租到摩托艇?

function isAll(Array n, Array m, S){

return bool

}


//问题二 请问给出一个策略

// - 使得整个团队租到最多的摩托艇

// - 在租到最多摩托艇的情况下,整体的支出尽量的少


function max( Array n, Array m, S) {

return {

num,// 多少摩托艇

cost // 总体资金支出

}

}


#腾讯##笔试题目#
全部评论
没测试,可能有错,肯定大佬指正。个人觉得不是背包。 有爱: public static int isAll(int[] n, int[] m, int S){ int sum = Arrays.stream(n).sum() + S; Arrays.sort(m); int i = 0; while (sum - m[i] > 0) { sum -= m[i]; i++; } return i; } 无爱问题1: public static boolean isAll(int[] n, int[] m, int S){ if (n.length > m.length) { return false; } Arrays.sort(n); Arrays.sort(m); for (int i=0; i<n.length; i++) { int need = n[i] - m[i]; if (need < 0) S += need; } return S >= 0; } 无爱问题2: private static int n[]; private static int m[]; private static int S; public static int[] isAll(int[] n, int[] m, int S){ Arrays.sort(n); Arrays.sort(m); Main.n = n; Main.m = m; Main.S = S; int l =0, r = m.length; while (l < r) { int mid = l + r + 1 >> 1; if (can(mid)) { l = mid; } else { r = mid - 1; } } int ans = 0; for (int i=0; i<l; i++) { ans += m[i]; } return new int[] {l, ans}; } private static boolean can(int count) { int tmpS = S; for (int i = count-1,j = n.length-1; i>=0; i--, j--) { if (n[j] < m[i]) { tmpS -= (m[i] - n[j]); } if (tmpS < 0) { return false; } } return true; }
点赞 回复 分享
发布于 2019-03-20 16:51
出租游艇的杰克马  哈哈哈哈哈
点赞 回复 分享
发布于 2019-03-21 17:04
有没有大佬贴个代码解读一下场景2的问题2呀🤨
点赞 回复 分享
发布于 2019-03-21 17:03
看起来就很难
点赞 回复 分享
发布于 2019-03-20 15:49

相关推荐

骨架屏(Skeleton&nbsp;Screen)是一种用户界面设计模式,用于在加载内容时提供一种视觉反馈。通过显示一些简单的占位元素,骨架屏能够改善用户体验,降低用户在等待页面内容加载时的焦虑感。下面是关于骨架屏的详细介绍。https://www.nowcoder.com/issue/tutorial?zhuanlanId=j572L2&amp;uuid=3a167dcf4a4643c6879cdd41c71c23f4一、骨架屏的定义骨架屏是一种临时加载状态的展示方式,通过用大致形状和位置表示即将加载的内容,而不是直接显示空白或加载动画。这样用户可以在加载过程中看到页面的结构,从而更好地理解即将到来的内容。二、骨架屏的特点形状简洁:一般使用单色或渐变色的简单矩形、圆形等元素,表示内容的占位,保持视觉简洁。响应式设计:在不同尺寸的屏幕上,骨架屏应适应内容的展示形式,例如手机、平板和桌面。模拟真实内容:骨架屏的布局和形状应该与页面实际内容相符,包括文字块、图片位置、卡片、列表等。三、骨架屏的优点提升用户体验:通过预先呈现结构,用户能够更清楚知道内容加载的位置和情况,减少焦虑感。提高加载感知:相较于纯粹的加载动画,骨架屏给人一种更为流畅的加载体验,用户会觉得页面更快响应。降低跳失率:骨架屏可以有效吸引用户注意,减少因内容加载缓慢而造成的离开页面的可能性。减少加载心理负担:显示具体元素的占位能够为用户设定期望值,从而降低心理负担。四、骨架屏的实现方法https://www.nowcoder.com/issue/tutorial?zhuanlanId=j572L2&amp;uuid=3a167dcf4a4643c6879cdd41c71c23f4
校招求职吐槽
点赞 评论 收藏
分享
评论
4
23
分享

创作者周榜

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