- 博客(37)
- 资源 (1)
- 收藏
- 关注
原创 头条客户端实习生面试(拿到实习offer了,第一轮简直折磨王,问的问题太多了,现在只能想起来这么多)
算法(字典序的时候最后E出了乱序QAQ):按原字符串字典序全排列例:ABCDE->ABCED...EDCBA版本号比较例:1.3.1>1.3.1.1问题(被计网疯狂轰炸):http状态码http请求种类哪些是幂等,哪些不幂等head和get的区别head中header的内容https的原理https不安全的地方数字签名加密算法题干...
2020-02-18 16:27:30
794
原创 阿里妈妈面试问题汇总(部门提前面,不算难,答案有时间再补充,网上基本也都有)
算法题:/* 用两个栈来实现一个队列,完成队列的Push和Pop操作,队列中的元素为int类型 */class Solution{public: void push(int node) { stack1.push(node); } int pop() { int result = null; if(!stanck2.is...
2020-02-17 16:44:48
1731
1
原创 南大高级算法备考题——时间与收益
题意:给一组任务,有各自的截止日期和收益,每个任务耗时一个单位时间,要求实现实现收益最大化,输出任务数和收益。题解:思路还是蛮简单的,利用贪心算法,先建立一个给定数据中最大截至日期大小的数组代表几天的任务怎么分配,每次在判断一个任务插不插入时,先看截至日期之前有没有空,有空就插入,没空的话就找收益最小的一天。这地方有个体现贪心的细节:是在找截止日期前数组最小值时,假如第一天和第二天相同,且...
2019-12-03 21:47:16
487
原创 南大高级算法备考题——无限递归字符串查询
题意:A字符串为12345,第一次拓展后A变成12345$54321,以后的第i次变成上一次的A+i个$+A的倒置,这样无限延伸,给出一个long类型的pos,求该位置的字符。题解:long类型处理是难点,为了避开我们只好采用对折,首先要明白变换中的基础单元是12345$54321,而对于给定的pos,它必定是关于n个$对称的,所以我们就要去求出基础单元折多少次时,字符串的总长度才能包括po...
2019-12-03 20:30:12
318
原创 南大高级算法备考题——倒置个数
题意:即求数组的逆序数题解:借助归并排序,每次在merge的时候,判断一下逆序数,比如我们在归并{3,8}和{2,9}时,当选择第一个数2放进临时的数组时,前半部分的数组指针i=left,后半部分的数组指针j=mid+1,当我们判断出3<2时,意味着自指针和之后的前半部分数都属于逆序,所以逆序数加上前半部分的右边界mid-i+1,以此类推。代码:import java.util...
2019-12-03 19:11:04
674
原创 南大高级算法之备考题——shell排序
题意:按照第二行数组里给的间距实现多次shell排序题解:很基础的shell排序代码:import java.util.*;public class Main { public static void shellSort(String[] array,int index,int pos){ for(int i=pos;i<array.length;i++){ S...
2019-12-02 23:36:19
284
原创 南大高级算法之备考题——按照另一个数组排序
题意:给定一个待排序数组和一个参考数组,对于待排序数组,优先按照参考数组里的顺序来排,其他的数再按照升序排题解:自定义一个数据结构,保存数值和优先级,在初始化的时候把数放到我们自定义的数据结构数组的数值中,再遍历一遍我们自定义数据结构的数组,记参考数组长度为parray_length,出现哪个位置(pos)的数,我们就把自定义的数据结构中优先级置为parray_length-pos,其余未出现...
2019-12-02 21:08:29
240
原创 南大高级算法之备考题——按数值个数排序
题意:按照数字出现的个数从大到小排列,个数相同的按照数值升序排列。题解:自定义一个数据结构保存数值和数值个数,覆写Arrays.sort(,new Comparator(){});使得先按照数值个数大小判断,再按数值大小判断。import java.util.*;class Node{ public Node(int value){ this.value = value; ...
2019-12-02 20:42:31
177
原创 南大高级算法作业之备考题——硬币最小数量
题解:典型的dp问题,虽然题意是要用贪心,用一个一维数组来存放下标对应的钱最少需要多少枚硬币即可。import java.util.*;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int e_num = scan...
2019-11-28 13:46:26
213
原创 南大高级算法作业之备考题——时间分隔
题意:给出火车进出站时间,求出站台能同时容纳几辆火车才能满足需要。题解:对进出站时间进行排序,数组里存放的是下标,进站时间下标依次为0,1,2...n-1出站时间下标为n,n+1,n+2...2n-1,最后沿着排好的序,遇到进站的坐标就+1,遇到出站的就-1,得到最大的值即可。import java.util.*;public class Main { public stat...
2019-11-28 12:38:33
180
原创 南大高级算法作业之是否能通过考试
import java.util.*;public class Main { public static int findMaxScore(int[][] dp,String[] score,String[] time,int num,int target){ for(int i=0;i<target+1;i ++){ dp[0][i] = 0; } for(int ...
2019-11-21 21:21:18
281
原创 南大高级算法作业之订单问题
Description:每个服务员对不同订单收的小费不一样,且最多接的订单数也不同,求出最多小费的总和。input:15 3 31 2 3 4 55 4 3 2 1output:21思路:运用dp,建立一个m*n的数组,当前值的左边代表上一个订单由a服务员接,上边代表上一个订单由b服务员接,从左往右取意味着本订单由b接,从上往下加意味着本订单由a接。当前的订单次数为横...
2019-11-21 14:35:08
329
原创 南大高级算法作业之数组查询
Description:最多去掉数组中一个数,找出子数组最大和。思路:比较暴力,先利用动态规划求出原数组的子数组最大和,然后遍历一下数组,如果当前数不为负数就不处理,如果为负数就置为0,然后求出此时的最大和,并与当前最大和比较后更新最大和,再把负数值放回去,继续处理后面的负数,最终得到结果。代码:import java.util.*;public class Main { ...
2019-11-21 14:03:02
198
原创 南大高级算法作业之如何花最少的钱买蔬菜
描述:三种菜,相邻的店不能买一种菜,同一种菜每个店的价格不一样思路:简单的dp,建立n*3的数组,当前花的最少的钱就是上一行中不同列的最小值,加上当前数组值即可,这样迭代到最后一行,找出最小值。代码:import java.util.*;public class Main { public static int findLastLeast(int[][] matrix,i...
2019-11-21 11:52:45
291
原创 南大高级算法作业之按照要求保留数组元素使得和最大
import java.util.*;public class Main { public static int selectTheMax(String[] num){ int max = -1; int pos = -1; for(int i=0;i<num.length;i++){ if(Integer.parseInt(num[i...
2019-11-21 10:51:56
183
原创 南大高级算法作业之分配问题
问题描述:对给定的n个任务与n个人之间的成本矩阵完成成本最低的任务分配策略。input:142 1 6,1 2 2,1 3 7,1 4 8,1 1 9,2 2 4,2 3 3,2 4 7,3 1 5,3 2 8,3 3 1,3 4 8,4 1 7,4 2 6,4 3 9,4 4 4output:2 1 3 4代码:import java.util.*;publ...
2019-11-19 22:28:10
498
原创 南大高级算法作业之数字重组整除问题
input:3171516output:1751Not Possible 先利用递归求出全排列,然后对全排列进行转为字符串操作,判断是否被17整除以及是否比上一个result值大,最后得到最大的值,有一个细节是每次存放结果时,如果用int类型的result就不可以,可能是每次调用递归都会重新初始化result,想改的话设置为全局变量就行,也没有必要有返回值,反...
2019-10-31 20:42:06
426
原创 南大高级算法作业之字符串匹配问题
import java.util.*;public class Main{ public static void main (String[] args){ Scanner scan = new Scanner(System.in); int e_num = Integer.parseInt(scan.nextLine()); while(e...
2019-10-31 14:08:45
187
原创 南大高级算法作业之整除查询
import java.util.*;public class Main{ public static void main (String[] args){ Scanner scan = new Scanner(System.in); int e_num = Integer.parseInt(scan.nextLine()); while(e...
2019-10-31 10:24:54
152
原创 南大高级算法作业之非递归合并排序
import java.util.*;public class Main{ //一次划分排序 public static void merge(int[]element,int left,int mid,int right){ int[] temp = new int[right-left+1]; int l = left; int r = right;...
2019-10-31 09:13:23
195
原创 南大高级算法作业之非递归快排
input:13 24 3 56 34 3 78 12 29 49 84 51 9 10013 24 3 56 34 4 78 12 29 49 84 51 9 99output:3 3 9 12 24 29 34 49 51 56 78 84 1003 4 9 12 24 29 34 49 51 56 78 84 99 用栈来实现递归,单次划分出来的结果和上边界不停地存...
2019-10-30 19:40:36
301
原创 南大高级算法作业之计数排序
input:13 24 3 56 34 3 78 12 29 49 84 51 9 10013 24 3 52 34 3 78 12 29 49 84 51 9 97output:3 3 9 12 24 29 34 49 51 56 78 84 1003 3 9 12 24 29 34 49 51 52 78 84 97 计数排序就是统计比当前数组中某个数小的数字个数,通...
2019-10-30 13:43:52
182
原创 南大高级算法作业之冒泡排序
代码:import java.util.*;public class Main{ //一次冒泡 public static void swap(int[]element,int num1,int num2){ if(element[num1] > element[num2]){ int temp = element[num2]; e...
2019-10-29 16:27:02
156
原创 南大高级算法作业之插入排序
代码:import java.util.*;public class Main{ public static void main (String[] args){ Scanner scan = new Scanner(System.in); int e_num = Integer.parseInt(scan.nextLine());...
2019-10-29 15:59:26
135
原创 南大高级算法作业之链表回文
input:43 1 2 14 1 2 2 13 3 5 36 a b c d c aoutput:truetruetruefalse 考虑到时间复杂度和空间复杂度要求,我们使用栈来判断,一次读取即可,一半进栈,然后退栈与剩下一半一次对比,出现不一致就结束,全部对比完的话就是true,某人要用链表结构那就用吧。代码:import java.u...
2019-10-29 02:29:15
152
原创 南大高级算法作业之最长公共子序列
input:11A2BD3G4H56JK23EFG4I5J6K7output:23G456K23G45JK 典型的动态规划问题,处理思路就是传统的方法,详见https://blog.csdn.net/zw6161080123/article/details/80639932,本题问题在于如何得到所有序列并按照字典序排列,这个时候我们想到了Collections.sor...
2019-10-29 01:57:42
231
转载 南大高级算法作业之子矩阵问题
input:13 41 0 1 11 1 1 11 1 1 0output:6 算法的思想借鉴的是:https://blog.csdn.net/a745233700/article/details/82056236,基本实现也是按照这个思路,能看懂的话就蛮好理解的,list用的比较冗余,我简单修改了一下。代码:import java.util.*;c...
2019-10-22 15:43:01
382
原创 南大高级算法作业之固定和的元素对
input:11 2 4 7 11 0 9 511output:3 本题思路比较简单,主要是尽量简化复杂度,同时注意排坑,一是不能和自己匹配,必须是不同的两个数,二是对于大小为目标数一半的数字,多次出现时要注意正确地计算其对数。采用map来保存出现次数,并将target/2单独拎出来可以规避自己与自己比较的情形。import java.util.*;pu...
2019-10-21 21:07:21
289
原创 南大高级算法作业之区间第k最小
input:11 2 3 4 5 6 73 52output:4 被nextInt换行搞得很难受,索性全用nextline,找第k小的数用优先队列加大根堆。代码:import java.util.*;public class Main{ public static void main (String[] args){ ...
2019-10-21 15:43:33
193
原创 南大高级算法作业之汉诺塔
input:12output:8 典型的递归问题,有手就行。代码:import java.util.Scanner;public class Main{ static int hannuota(int num){ if(num == 1){ return 2; }else{ return 3*hannuot...
2019-10-21 14:19:18
223
原创 力扣两数相加
描述:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8代码:/** * Defin...
2019-10-18 01:39:22
210
原创 第三题
import java.util.Scanner; public class Main { static boolean isPossible(int[] arr, int n, int m, int curr_min) { int studentsRequired = 1; int curr_sum = 0; ...
2019-10-17 20:23:08
162
原创 南大高级算法作业之数学公式
input:23 2 4450 768 517output:134 简单的次方求余,一步步拆解即可,比如3^4%5,可以看成((4+5)*3^3)%5,只需要考虑(4*3^3)%5,同理往下推,次方用来计数,小于除数就乘底数,次方减一,大于除数就求余,把每次的余数当结果。import java.util.*;public class Main { pu...
2019-10-17 11:07:16
643
原创 南大高级算法作业之子数组的取值范围
input:13 6 4 3 23output:2 本题的解题思路还是从简化整个流程入手,想要得到复杂度为N的算法,显然需要用到滑动窗口,仔细分析一下该题,其实想得到满足条件的连续子数组有以下两个规律:1.当[i,j]满足要求时,[i,j+1]必然满足要求;2.当[i,j]不满足要求时,[i-1,j]和[i,j-1]也同样不满足要求,所以窗口可以一直往前走,不需要回头。...
2019-10-13 19:54:24
210
原创 南大高级算法作业之数组和窗口
input:14 3 5 4 3 3 6 73output:32 这个问题的思路采用滑动窗口,其实也就是简化了所谓的比较步骤,增加了判定:1.窗口要不断前移,因此必须要保证窗口中流通的元素不超过窗口大小;2.当下一个待进窗口的元素大于窗口内前面的元素时,说明前面元素已经不可能作为最大值,果然删除;3.当待进窗口的元素小于窗口内元素时,要给予保留,因为伴随着窗口移动,小元素...
2019-10-10 17:24:08
227
原创 南大高级算法之备考题——最小交换次数
题意:求出一个序列通过交换元素实现升序的最小交换次数。题解:按部就班地求次数即可,从第一个位置开始,每次通过交换直到该位置被放上应该放上的元素,如2 5 4 3 1,我们先得到目标序列1 2 3 4 5,对第一个位置的元素2,它应该被放在第二个,所以交换,次数+1,得到5 2 4 3 1,此时判断第一个位置的元素仍然不是应该放上去的元素,所以再交换,得到1 2 4 3 5,对于第一个位置的交换...
2019-10-02 11:25:24
602
原创 南大高级算法作业之按数值个数排序
input:155 5 4 6 4output:4 4 5 5 6代码(value逆序排序部分参考了https://www.jianshu.com/p/240875d9f70a):import java.util.*;import java.util.Map.Entry;public class Main { public static void...
2019-09-27 00:06:08
276
利用双线性插值实现的简单图像缩放
2018-05-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人