offer

【剑指OFFER】二叉树的镜像

前提是你 提交于 2020-02-15 16:01:52
【问题描述】 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 【AC代码】 1 /** 2 public class TreeNode { 3 int val = 0; 4 TreeNode left = null; 5 TreeNode right = null; 6 7 public TreeNode(int val) { 8 this.val = val; 9 10 } 11 12 } 13 */ 14 public class Solution { 15 public void Mirror(TreeNode root) { 16 if (root == null) return; 17 TreeNode tmp = root.left; 18 root.left = root.right; 19 root.right = tmp; 20 Mirror(root.left); 21 Mirror(root.right); 22 } 23 } View Code 来源: https://www.cnblogs.com/moongazer/p/11669518.html

[acm1203]

让人想犯罪 __ 提交于 2020-02-05 00:53:16
问题: Problem Description Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。“I NEED A OFFER”,他大叫一声。帮帮这个可怜的人吧,帮助他计算一下,他可以收到至少一份offer的最大概率。(如果Speakless选择了多个学校,得到任意一个学校的offer都可以)。 Input 输入有若干组数据,每组数据的第一行有两个正整数n,m(0<=n<=10000,0<=m<=10000) 后面的m行,每行都有两个数据ai(整型),bi(实型)分别表示第i个学校的申请费用和可能拿到offer的概率。 输入的最后有两个0。 Output 每组数据都对应一个输出,表示Speakless可能得到至少一份offer的最大概率。用百分数表示,精确到小数点后一位。 Sample Input 10 3 4 0.1 4 0.2 5 0.3 0 0 Sample Output 44.0% Hint

Queue的add()和offer()及remove()和poll()的区别

泪湿孤枕 提交于 2020-02-04 12:12:55
一. add()方法和offer()方法 二者均是向队列尾部添加元素; 当超出队列界限的时,add()方法会抛出异常,offer()方法会返回false。 二. remove()方法和poll()方法 二者均是从队列头部删除元素; 当超出队列界限的时,remove()方法会抛出异常,poll()方法会返回null。 来源: CSDN 作者: Keyloved 链接: https://blog.csdn.net/qq_44837912/article/details/104165789

剑指offer之字符串题型总结

早过忘川 提交于 2020-02-01 23:02:22
题库里关于字符串的题型大致是以下几类 字符串,字符数组,整数等转换 规则判断 数字运算 与数组操作相关 动态规划 高级数据结构 1.字符串,字符数组,整数等转换 (1)字符串与字符数组的转换 int main() { string s = "hello"; const char* s1 = NULL; //string转const char* s1 = s.c_str(); char* s2 = NULL; const char* s3 = NULL; /*string转char* * 先将字符串转换为const char* * 再将const char转char */ s3 = s.c_str(); s2 = const_cast<char*>(s3); //string转char[],按下标挨个赋值 char s4[10] = {0}; for(int i = 0; i < s.length(); i++){ s4[i] = s[i]; } //const char*转string const char* s5 = "hello"; string s6; s6 = s5; char* s7 = NULL; //char[]转其他类型都可直接赋值 } 这里要注意下const char*,char*,char[]之间的区别,对于char*他是指向一块存放这字符串内存

C++版 - 剑指offer面试题28: 字符串的排列

半世苍凉 提交于 2020-02-01 05:14:23
题目: 字符串的排列 热度指数:5777 时间限制:1秒 空间限制:32768K 本题知识点: 字符串 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 在线提交网址: http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7?tpId=13&tqId=11180&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 分析: 方法1: 递归解法 方法2: dfs 方法3: 先对输入的字符串进行重新排序, 然后使用stl算法库中的函数next_permutation()按顺序得到各个字符串, 并依次存入vector中… 按方法3给出的已AC代码: #include <iostream>

剑指offer 最小的K个数

主宰稳场 提交于 2020-01-30 07:04:04
题目 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 思路 1 利用大顶堆保存这k个数 2 遍历input数组,每次与堆顶元素比较,若堆顶元素比较大,则删除堆顶元素,把input元素加入堆 import java . util . * ; public class Solution { public ArrayList < Integer > GetLeastNumbers_Solution ( int [ ] input , int k ) { ArrayList < Integer > ans = new ArrayList ( ) ; if ( k < 1 || k > input . length ) return ans ; PriorityQueue < Integer > maxHead = new PriorityQueue < Integer > ( k , new Comparator < Integer > ( ) { public int compare ( Integer o1 , Integer o2 ) { return o2 . compareTo ( o1 ) ; } } ) ; for ( int i = 0 ; i < input . length ; i ++ ) {

offer(背包问题、DP)

自作多情 提交于 2020-01-20 18:11:07
蒜头君很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。蒜头君没有多少钱,总共只攒了n万元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a (万美元),并且蒜头君估计了他得到这个学校offer的可能性b。 不同学校之间是否得到offer不会互相影响。"I NEED A OFFER",他大叫一声。帮帮这个可怜的人吧,帮助他计算一下,他可以收到至少一份offer的最大概率。 (如果蒜头君选择了多个学校,得到任意一个学校的offer都可以)。 输入格式 第一行有两个正整数n,m(0≤n≤10000,0≤m≤10000)。 后面的m行,每行都有两个数据a i (整型), b i (实型)分别表示第i个学校的申请费用和可能拿到offer的概率。 输出格式 每组数据都对应一个输出,表示蒜头君可能得到至少一份offer的最大概率。百分数表示,精确到小数后一位。 样例输入 10 3 4 0.1 4 0.2 5 0.3 样例输出 44.0% 01背包问题 这里我们的状态转移方程会和前面的01背包的状态转移方程发生变化。 dp[j]表示花费j元,至少可以拿到一个学校的offer的概率。 当有一所学校是花费x元拿到offer的概率是y。所以这个时候就是1

[剑指Offer学习记录]

℡╲_俬逩灬. 提交于 2020-01-20 07:22:23
复习次数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 1 面试题4:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:通过将target与数组右上角的数组进行判断来逐步缩小查询数组的范围。 function Find(target, array) { const n = array.length, m = array[0].length; let row = 0, col = m-1; while(row < n && col >= 0){ if(target < array[row][col]){ col--; }else if(target > array[row][col]){ row++; }else{ return true } } return false; }

秋招还有 1 个月到达战场,请做好准备 !

妖精的绣舞 提交于 2020-01-17 13:51:23
​​ 不知不觉就到了六月份,六月本属于夏天,为什么说秋招快要开始了呢,实际上,秋招的这个“秋”字早就名不副实了,现在的大公司都喜欢在秋招之前就开始内推、招聘提前批学生,而提前批招聘的最早时间点大概就是6月底7月初的时候。 不过,这个时间点开始招聘的基本上都是技术岗位,也就是程序员,同为程序猿的我,希望借这篇文章,提醒各位即将参加校园招聘的朋友,真的不早了,你准备好迎接秋招了吗,这可能是你离大厂理想最近的一次机会。 去年的这个时候,我就已经想好,这个月是我最后复习的一个月,从7月开始,提前批就是我的主战场,开始内推、投简历、笔试面试,尽量在提前批能够拿到满意的offer,这样一来就可以避免在秋招的时候才疲于奔命。 本着这样的一个想法,我在秋招提前批就拿到了bat的研发offer,然后在秋招期间又拿到了网易、滴滴、头条、华为、亚马逊等offer,基本上是我能想到的最好的结果了。 当然,这之前我复习了大概3个月左右的时间,这只是复习时间,我在研究生两年时间里基本上也都在学习,最终的目标自然就是秋招,两年的学习时间+3个月的最后冲刺复习时间,能拿到这样一个结果,其实也不是特别意外的事情,当然,这也和我对校园招聘比较好的理解密不可分。 在战略上轻视对手,在战术上要重视对手。为什么说秋招提前批是你拿到offer的最好机会呢,因为这个阶段参加招聘的同学并不多,很多同学要么在公司实习

基于剑指Offer的刷题

瘦欲@ 提交于 2020-01-13 23:14:41
之前找工作的时候也刷过题,那个时候在Leetcode上刷的,您会发现怎么刷也刷不完(除非您全职刷题)。这次在总结之前经验的基础上,找来了剑指Offer这本书,配上牛客网,比较成功得把所有题目刷了一遍,成就感满满的。主要步骤如下: 先过一遍剑指Offer,特别是第一章,里面讲得关于面试的相关技巧还是非常中肯的,我也当过面试官,这些技巧的确都是客观存在的。 对照剑指Offer的题目,先刷数据结构部分,再刷算法部分。 如果有余力,在牛客网上刷完一提之后,可以看耗时与内存消耗,可以尝试去改进。 如果做错了,可以对照书上的解释,理解一下再刷。 一些心得 : 一定要记忆 ,如果见一提刷一提,不会有本质的提高。基本的知识要牢记,比如5种基本的数据结构,要能随口说出来:队列/栈、树、字符串、链表、数组 一定要总结 ,对一些基本的套路,要成竹在胸。比如字符串,如果您能把正则表达式匹配玩得溜溜的,基本上字符串就没啥问题了;用两个栈实现个队列,队列/栈的基本知识也就掌握了;链表的删除插入反转这些掌握了,链表也就OK了。 查阅API一定要用官方文档 ,我推荐使用"www.cplusplus.com",如果每次都在其他各种讨论网站上看,知识会不成体系。 一定不要盲目刷题 ,需要知道该题的前因后果,重点。这个靠刷题网站(Leetcode,牛客等)是不行的,需要有本书,我推荐使用剑指Offer。 最后 :