C++和前端同算法题
js node(核心代码模式),日期相近的可能会有原题,奇安信流程可能会较长(参考秋招时好几个月)
算法(2道)涉及DFS,剪枝,dp动归,双指针加贪心(好爱考选择类+棋盘类啊- -)
单选(20题*2分)多选(10题*2分)算法(2题*20分)
一个画布大小为100*100。画布本来是白色的。小明在上面画框,框里的小方格,如果是白色的就会变成黑色,如果是黑色的,就会变成白色。问题:小明画了很多次框后,画布上白色的小方格有多少个。
输入:【[0 0 1 1],[4 4 2 2]】
输出:9995
说明:白色面积为100*100-1-4 = 9995.
ac:
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 得到画布上白色小方格的个数 * @param rects int整型二维数组 * @return int整型 */ const map=Array.from(new Array(100),()=>new Array(100).fill(true)); function paint(arr) { // write code here const x0=Math.min(arr[0],arr[2]); const x1=Math.max(arr[0],arr[2]); const y0=Math.min(arr[1],arr[3]); const y1=Math.max(arr[1],arr[3]); for(let i=x0;i<x1;i++){ for(let j=y0;j<y1;j++){ map[i][j]=(!map[i][j]); } } } function getWhiteCounts( rects ) { // write code here for(const rec of rects){ paint(rec) } let res=0; for(let i=0;i<100;i++){ for(let j=0;j<100;j++){ if(map[i][j]){ res++; } } } return res; }
某几位同学准备要5排一起打手机游戏,现在他们5个人一共有N台手机,但是各个手机剩余电量不等,假设每玩一分钟需要消耗电量1%,不玩手机不消耗电量,手机电量消耗光之后可以换剩余的有电的手机继续一起游戏,那么他们最多能保持多久的5人一起游戏时间?
输入:每台手机的剩余电量
[100 100 100 50 100 5 10]
输出:预期时间
[65]
ac:题解来自5.14奇安信C++笔试复盘
class Solution { public: int maxTime(vector<int>& batteries) { sort(batteries.begin(), batteries.end(), greater<int>()); int time = 0; int K = batteries.size(); while(K >= 5) { for (int i = 0; i < 5; i++) { batteries[i] --; if (batteries[i] == 0) K--; } time++; sort(batteries.begin(), batteries.end(), greater<int>()); } return time; } };
9.15 奇安信前端笔试
var lossLess = function (numsA,numsB) { function sum(nums){ return nums.reduce((a,b)=>a+b) } function Free1(nums){ // b商场的优惠 直接封装函数好了 nums.sort((a,b)=>a+b) return nums[1]+nums[2] } let cost = 0 let len =numsA.length // 长度肯定相同的 if(len<3){ // 直接算总和最小额 return Math.min(sum(numsA),sum(numsB)) } //i>3 let i=0 while(i<len){ //0 1 2 3|4 if(i+2<len){ let nA = numsA.slice(i,i+3) let nB = numsB.slice(i,i+3) let lessCost = 0 // 算前三个那个钱少 for(let k=0;k<nA.length;k++){ if(nA[k]<nB[k]){ lessCost+=nA[k] }else{ lessCost+=nB[k] } } cost += Math.min(Math.floor(sum(nA)*0.6),Free1(nB),lessCost) i+=2 }else if(numsA[i]<numsB[i]){ cost+=numsA[i] }else{ cost+=numsB[i] } i++ } return cost }
var getMinLen = function (maps) { // write code here let res = [] let path = [] // 排序成距离原点位置近的在左 maps.sort((a,b)=>((a[0]-0)+(a[1]-0))-((b[0]-0)+(b[1]-0))) function Tracer(left,right,startIndex){ if(path.length==maps.length){ // console.log(path) res.push(path.reduce((a,b)=>a+b)) } for(let i=startIndex;i<maps.length;i++){ let distance = Math.abs(maps[i][0]-left)+Math.abs(maps[i][1]-right) path.push(distance) Tracer(maps[i][0],maps[i][1],i+1) path.pop() } } Tracer(0,0,0) return Math.min(...res) }
8月25日 奇安信前端工程师笔试
判断从城市0到城市4有多少条路可以通
0和4城市之间的网络拓扑是有向无环图,计算0到4有多少条路可以走
function DagPathNum(nodes) { // write code here let n = nodes.length; //建立n维矩阵存储图 //Array [Array [false...false]...Array [false...false]],...代表n个 let map = Array.from(new Array(n), () => new Array(n).fill(false)); for (let i = 0; i < nodes.length; i++) { for (let j = 0; j < nodes[i].length; j++) { map[i][nodes[i][j]] = true; } } console.log(map); let count = 0; function fun(i) { console.log("i:", i); if (i == n - 1) count++; for (let j = 0; j < n; j++) { if (map[i][j]) { fun(j); } } } fun(0) return count; }
给定一个无符号整数数组,每个元素表示一个点,数组元素的索引作为直角坐标系的x坐标,元素作为y坐标,任意两个点: x轴方向的距离作为长方形的长,y轴方向的最小值作为长方形的宽,找到两个点使长方形面积最大,输出面积。 例如 [4,1,2,7]代表4个点(0,4),(1,1),(2,2),(3,7),点(0,4),(1,1)表示的长方形: 长=(1-0),宽=min(4,1),面积=长*宽=1
function cfx(node) { node = node.replace("[", "").replace("]", "").split(","); let nums = [], max = 0; for (let i = 0; i < node.length; i++) { nums.push({ x: i, y: parseInt(node[i]) }) } for (let i = 0; i < nums.length; i++) { for (let j = i + 1; j < nums.length; j++) { let c = nums[j].x - nums[i].x; let w = getMin(nums[i].y, nums[j].y); max = Math.max(max, c * w) } } function getMin(a, b) { return a < b ? a : b; } return max }
奇安信2022前端春招笔试题
1.boxsizing的默认值
2.ospf相关知识
3.a标签伪类的排列方式
4.exa存储的值为0X123456,那么al存储器的值为?
5.已知前序遍历123456,那么中序遍历的结果?
6.设置tab键次序的属性是?
7.以下哪种是绝对单位?(em,px,vh,ch)
8.n个节点的完全二叉树的深度?
9.cors发送预检请求的条件?
10.tcp中的option最大长度是?
1.进程的基础功能?
2, 二叉树的一道题
3.对于bgp说法正确的是?
1.有一批货物需要抽检,抽检从第一个或者第二个开始,依次从第i+1个,或者i+2个抽检,问抽检的最短时间?
2.有一个二叉树,现对其打乱几个节点,变成非二叉树,请你还原这棵二叉树
前端常考设计模式,进程线程,数据结构,经典算部分涵盖了大部分知识点,部分目录展示
2023年最全前端面试(20w字)HTML5+CSS3+JS+TS4+Vue3+React18+八股文+手写+项目+笔试 涵盖了大部分笔面知识点,部分目录展示
#奇安信##前端##笔试##面试##实习#