Leetcode 328. 奇偶链表 (将节点编号为奇数和偶数的链表分别排在一起)

我写的代码class Solution {public: ListNode* oddEvenList(ListNode* head) { if(head==NULL) return head; ListNode* evenHead = new ListNode(-1); ListNode* evenTail = evenHead; ListNode* p = head; while(p&&p-..
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

2020/9/3 微软面试两题

2.编程题一道:两个无序单向链表,求第n大的数的value或者是node,我直接暴力做的val(遍历2个链表的val到vector然后排序,然后输出第n大的),然后面试官又让做返回node(map(val,node)存储,然后同上)询问链表是否是有序的,假如链表是有序的,那么等价于Leetcode 4题, 可以在log(n)时间解决,从语境分析,应该是被面试者没get到点。题目7个晶体管上的灯的亮暗可以组成0-9的任意一个数字。假设有n组晶体管,每组晶体管中至少有一个亮,可能...
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

Leetcode 282 给表达式添加运算符 +-*运算暴搜处理

+,-,*有一种特别直接的处理方法是直接算,保存一个答案ans,pre,遇到运算符就算,遇到乘法的时候就先把之前算的减掉ans-pre+pre*cur,就这样处理即可。typedef long long LL;class Solution {public: vector<string> addOperators(string num, int target) { string expression; helper(num,target,0,0..
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

2020/9/3 百度三道笔试编程题

1. 一道简单的模拟题:直接模拟即可过。2. 类似 Leetcode455. 分发饼干需要在排序的时候记录下index,然后按照原来的index输出3. 爬楼梯进阶版最少爬一个,最多爬m个,且当前上楼梯的阶数不能和之前两次的相同。(暂时没有思路)...
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

微软面试题刷题9/3 (难度medium到hard)

一面自我介绍 final修饰符 coding: 5^1, 5^2, 5^1+5^2,第n个数是多少? 类似Fib数列 coding: 一个字符串大整数,判断是否可以通过交换任意字符被8整除?难对于一个非负整数,最后四位相当于是 p1000 + x100 + y10 + z ,可以很显然的看出p1000必然能被8整除,所以一个非负整数只需要后三位能被8整除,那么这个数就一定能被8整除。所以如果我们能从这个数中任意取出三位,作为最后三位,其值能被8整除,就输出YES,否则NO。...
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

微软苏州面经:前两面简单,三面困难

4.22 苏州onsite 平行面一面面试官是个很温柔的小姐姐。1. 先简单的自我介绍2. 直接开始写题--最大子序列和(Leetcode原题)之前有做过所以10min左右写完,在小姐姐的引导下开始考虑一些边界情况:讨论过程中有涉及到防御式编程的一些技巧类似断言和错误处理(当时忘了提barricade好像)。第二道题--最大序列乘积(依旧原题):和上一道题一样用动态规划,很快能注意到和上道题的区别所在但是花了很久没有找出解决办法不过小姐姐一直在循循善诱最后勉强用两个dp方程做了出来。..
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

微软面试准备

一. 继续刷面经二. 历年笔试题过一下三. 英文自我介绍,英文问题练习
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

Leetcode 1239. 串联字符串的最大长度 (回溯暴搜)

因为每个单词可以选或者不选,所以可以用回溯暴搜的方法,枚举所有满足要求的子串,然后求max,这个算法的时间复杂度是指数级别的。class Solution {public: int maxLength(vector<string>& arr) { unordered_set<char> st; dfs(arr,0,st,0); return res; } int res = 0; v..
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

Leetcode 1375. 灯泡开关 III

这道题比较特殊,直接模拟,时间复杂度在O(N^2)以上如果灯要想全部变蓝,那么他的index之和一定是(n+1)*n/2, 所以有了如下做法:class Solution {public: int numTimesAllBlue(vector<int>& light) { int ans=0; long long sum=0,cnt=0; for(auto v : light) { ..
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

字节跳动Data面试题

一面:算法题:接雨水,阿拉伯数字转中文二面:字符串模拟大数加法三面:组合总和(标准的回溯搜索)一面面试官小哥是挺严肃的,先是介绍部门情况,就是做广告投放业务的。视频面试,全程一小时,特别基础,基本也就是多线程、网络、操作系统、数据库、redis,没有问很难的问题。算法题是接雨水和阿拉伯数字转中文计数完了他叫我先喝点水,十分钟后开始二面二面这个面试官是我见过发量最多的(233),整个过程很轻松,问的问题和今天也是没有收到offer的一天的90%一样,我就不写了。很有意思的.
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

Leetcode 257 二叉树的所有路径(给定一个二叉树,返回所有从根节点到叶子节点的路径)

搜索到叶子节点时往答案中添加。标准的DFSclass Solution {public: vector<string> res; vector<string> binaryTreePaths(TreeNode* root) { string s; dfs(root,s); return res; } void dfs(TreeNode* root, string s){ ...
分类: 其他 发布时间: 09-10 12:03 阅读次数: 0

头条高频面试算法题

做题:31.下一个排列 做题:全排列和全排列II写题:1,股票,你们懂得 写题:2,股票,重复购买 写题:3,股票,有交易费用三道题目都不算特别难写题:链表倒数第k个结点容易题写题:迭代二叉树的深度 BFS写题:0~n-1中缺失的数字(两种方法) 偏容易写题:二叉搜索树的后序遍历序列写题:25. K 个一组翻转链表...
分类: 其他 发布时间: 09-10 12:02 阅读次数: 0

2020/9/5 微信和猿辅导面试算法题

1,str转double 在str转int的基础上加花。(略困难)2,两个有序链表合并 这个容易3,有序数组,有多少个数的平方不一样 由于单调性,平方数相同的情况只可能是正数和负数(容易)4,两个有序数组第k小 Leetcode 第4题,困难5,可以翻转一次...
分类: 其他 发布时间: 09-10 12:02 阅读次数: 0

高频面试题Leetcode 42 接雨水 面试写法

思路是单独计算每一个格子能解多少雨水,然后加起来。当前格子能接的雨水数,取绝于左边和右边最远的最大高度和当前高度的差。很容易写出一个O(n^2)的代码,然后如果预处理一个leftMax和rightMax数组,就能把答案优化到O(N)class Solution {public: int trap(vector<int>& height) { int n = height.size(); int res=0; for(..
分类: 其他 发布时间: 09-10 12:02 阅读次数: 0

快速排序对称模板

记住对称性,记住双swapclass Solution {public: vector<int> sortArray(vector<int>& nums) { sort(nums,0,nums.size()-1); return nums; } void sort(vector<int>& nums, int start, int end){ if(start>=end
分类: 其他 发布时间: 09-10 12:02 阅读次数: 0

2020/9/7 贝壳找房笔试题

1. 石头剪刀布模拟题 easy2.题目大意:单次操作可以插入一个字符至末尾 / 或将当前已有字符copy一遍到末尾(仅可使用一次)问最少需要多少次操作得到目标串slen<=1e6len<=1e6len<=1e6注意:只能复制一次是重点,什么是复制一次,就是把abc+abc,理解清楚这个是重点,所以并不需要KMP,只需要判断前n/2的前缀就行。public class T02 { public static void main(String[]...
分类: 其他 发布时间: 09-10 12:02 阅读次数: 0

英伟达2020/9/7笔试题

谷歌笔试题——排序,只允许0和其他元素交换2.2 长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap,请设计并实现排序。这题有一个隐含条件:即数组元素是连续的,即0——n-1,当你排好序后,你会发现数组元素和该元素的下标是相等的。以数组2 0 3 1为例交换swap(nums[i],nums[nums[i]]) 拆分为swap(nums[i], nums[0]) 以及swap(nums[nums[i]], nums[0]) 两个操作。这题比较偏..
分类: 其他 发布时间: 09-10 12:02 阅读次数: 0

Leetcode 318 最大单词长度乘积 (字符串用位运算预处理在O(1)时间判断两个字符串没有相同字符)

直接枚举,时间复杂度是O(N^2L), 因为判断两个字符串是否有相同的字符,需要O(L)的时间用位运算将字符串映射到一个int,如果完全没有重复的字符,那么这两个int &后为0class Solution {public: int map(const string& s) { int res = 0; for (auto c : s) res |= 1 << (c - a); r..
分类: 其他 发布时间: 09-10 12:02 阅读次数: 0

Leetcode 337. 打家劫舍 III 递归状态定义,记忆话搜索

如下代码,直接傻搜的话会超时。class Solution {public: unordered_map<TreeNode*,int> hashmap; int rob(TreeNode* root) { if(root==NULL) return 0; // if(hashmap.count(root)) return hashmap[root]; int left = rob(root->left); ...
分类: 其他 发布时间: 09-10 12:02 阅读次数: 0

Leetcode 329. 矩阵中的最长递增路径 记忆化搜索

如果每一个点dfs,找最大值,这样存在大量的重复搜索。避免重复搜索的办法是用记忆话搜索,用f[i][j]表示从i,j出发的最长路径。很容易推导出转移方程const int dx[] = {1,0,-1,0};const int dy[] = {0,-1,0,1};class Solution {public: int longestIncreasingPath(vector<vector<int>>& matrix) { int n =..
分类: 其他 发布时间: 09-10 12:02 阅读次数: 0