面试题
文章平均质量分 58
STILLxjy
不要让任何人打乱你生活的节奏
展开
-
小偷能获取的最大金额 & 环形小区 [分类讨论第一家是否能偷]
题目有一个环形的小区,每家有一定的金额,使用nums[]数组表示,小偷进了小区进行偷取。小偷偷了一家后,与这家相邻的家就不能再偷了,请问小偷能偷取的最大金额是多少?思路若小区只是一排,那题目就简单了,简单dp即可。dp[i][0] 表示不偷取第i家,在前i家中可偷取的最大金额dp[i][1] 表示偷取第i家,在前i家中可偷取的最大金额那么可得:dp[i][0] = max(dp[i-1][0], dp[i-1[1])dp[i][1] = dp[i-1][0] + nums[i]现在由于是原创 2020-11-19 12:29:49 · 575 阅读 · 1 评论 -
(ByteDance)求全排列
字节面试二面算法题。题目:求无重复数组的求排列。思路是由dfs算法,每次从数组中取出一个没有被取出的数(即f[i] == 0),但取出所有数时,得到一种排列方式。回溯时,还原f[i] 的状态,删除当前列表中的最后的元素。代码package com.STILLxjy.codedance;import java.util.ArrayList;import java.util.List;public class permute { public static void main(S原创 2020-11-19 09:30:29 · 234 阅读 · 0 评论 -
(ByteDance)找出两人共同的工作空闲时间段 [区间合并]
字节跳动二面算法题。Input:有两名员工A和B,A的上班时间为A’s available time is from 8:00 to 19:00,A在上班时间内有会议的时间段分别为:schedule is [8:30, 11:30], [12:30, 14:00], [17:00, 18:00]B的上班时间为B’s available time is from 10:00 to 20:00,B在上班时间内有会议的时间段分别为:schedule is [10:00, 11:00], [13原创 2020-11-19 09:20:07 · 980 阅读 · 0 评论 -
[面试总结] 归并排序 (分治法+后序遍历)
归并排序的核心思想是:分治当我们要排序一个数组时,我们首先将这个数组拆分成两半,想办法将这两个子数组进行排序,然后再将这两个有序的子数组合并为一个有序的数组。而对于两个子数组而言,我们依然先将其拆分,再将其子有序数组进行合并。因此归并排序的算法实现分为两步:拆分 + 合并。并且是先拆分,再合并。由于当一个数组的大小为1时,那它就是有序的,不用进行排序了。所以在一直往下进行拆分时,当拆分为大小为1时,就停止拆分,然后开始逐层往上进行合并,将两个有序的子数组合并为一个有序的数组。例如我们要将下列数组进原创 2020-09-28 19:28:11 · 352 阅读 · 0 评论 -
[面试总结] 快速排序 (两种实现思路)
快速排序算法的核心是:每次将一个选定的基准数挪到待排序列中的某一位置(假设为位置K),使得以K为分界点,左边的数都小于等于基准数,右边的数都大于等于基准数。 然后以K为分界点,递归操作序列[0, K-1] 和 序列[K+1, n]。假设我们现在对 “6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为 基准数 (就是一个用来参照的数),为了方便,就让 第一个数 6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基原创 2020-09-28 15:19:07 · 448 阅读 · 0 评论 -
(2018年10月10日 华为笔试最后一道算法题) 最长飞机跑道 [动态规划] 第一次超内存
题目:分析:该题就是ACM题 滑雪 的变形。有关滑雪的讲解: https://blog.csdn.net/STILLxjy/article/details/52097384https://www.cnblogs.com/Asimple/p/5715753.html思路为:在(i,j)处出发可以达到的最长道路长度为: 从(1,j)四周点(x+dx[i],y+dy[i])处出发可以达到...原创 2018-10-10 21:59:28 · 898 阅读 · 0 评论