超硬核!我统计了BAT笔试面试出现频率最高的五道题,学会了总能碰到一道

所以说不要怕算法,简单的题反而出现的频率最高,不一定非要写个几百道才面试

两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

思路:

遇到的数字装到hashmap中,遇到的新数字查找有没有答案int dif = target - nums[i];

class Solution {public int[] twoSum(int[] nums, int target) {HashMap<Integer,Integer> map = new HashMap<>();int[] res = new int[2];for (int i = 0; i < nums.length; i++) {int dif = target - nums[i];if (map.get(dif) != null) {res[0] = map.get(dif);res[1] = i;return res;}map.put(nums[i],i);}return res;}
}

 

 

反转链表

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

 

经典题,一i个循环做那四个经典操作,自己拿纸笔画一画就懂啦。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode reverseList(ListNode head) {ListNode prev = null;ListNode curr = head;while (curr != null) {ListNode nextTemp = curr.next;curr.next = prev;prev = curr;curr = nextTemp;}return prev;}
}

 

有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true
示例 2:

输入: "()[]{}"
输出: true
示例 3:

输入: "(]"
输出: false
示例 4:

输入: "([)]"
输出: false
示例 5:

输入: "{[]}"
输出: true

思路:

初始化栈 。一次处理表达式的每个括号。

  1. 如果遇到开括号,我们只需将其推到栈上即可。这意味着我们将稍后处理它。
  2. 如果我们遇到一个闭括号,那么我们检查栈顶的元素。如果栈顶的元素是一个 相同类型的 左括号,那么我们将它从栈中弹出并继续处理。否则表达式无效。

如果到最后我们剩下的栈中仍然有元素,那么表达式无效。

class Solution {// Hash table that takes care of the mappings.private HashMap<Character, Character> mappings;// Initialize hash map with mappings. This simply makes the code easier to read.public Solution() {this.mappings = new HashMap<Character, Character>();this.mappings.put(')', '(');this.mappings.put('}', '{');this.mappings.put(']', '[');}public boolean isValid(String s) {// Initialize a stack to be used in the algorithm.Stack<Character> stack = new Stack<Character>();for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);// If the current character is a closing bracket.if (this.mappings.containsKey(c)) {// Get the top element of the stack. If the stack is empty, set a dummy value of '#'char topElement = stack.empty() ? '#' : stack.pop();// If the mapping for this bracket doesn't match the stack's top element, return false.if (topElement != this.mappings.get(c)) {return false;}} else {// If it was an opening bracket, push to the stack.stack.push(c);}}// If the stack still contains elements, then it is an invalid expression.return stack.isEmpty();}
}

爬楼梯/跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

找递推关系:

1)跳一阶,就一种方法

2)跳两阶,它可以一次跳两个,也可以一个一个跳,所以有两种

3)三个及三个以上,假设为n阶,青蛙可以是跳一阶来到这里,或者跳两阶来到这里,只有这两种方法。

它跳一阶来到这里,说明它上一次跳到n-1阶,

同理,它也可以从n-2跳过来

f(n)为跳到n的方法数,所以,f(n)=f(n-1)+f(n-2)


class Solution {public int climbStairs(int n) {int[] dp = new int[n + 1];dp[0] = 1;dp[1] = 1;for(int i = 2; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}
}

合并链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

 

示例 1:


输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:

输入:l1 = [], l2 = []
输出:[]
示例 3:

输入:l1 = [], l2 = [0]
输出:[0]
 

提示:

两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列

思路:归并的思想,一直比较两边的大小并且插入。

class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode prehead = new ListNode(-1);ListNode prev = prehead;while (l1 != null && l2 != null) {if (l1.val <= l2.val) {prev.next = l1;l1 = l1.next;} else {prev.next = l2;l2 = l2.next;}prev = prev.next;}// 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可prev.next = l1 == null ? l2 : l1;return prehead.next;}
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不骗你,全网首创的超硬核的万字SQL题

因为上次发了数据库原理总结&#xff0c;浏览快上万了&#xff0c;所以把我总结的题目 也送给大家 上次的数据库原理总结 一&#xff0e;根据员工工资计算其个人所得税&#xff0c;3000元为起征点&#xff0c;超出3000元的部分按照10%的比例征收个人所得税&#xff0c;例如&…

学姐腾讯产品面经

顺利拿到sp offer&#xff0c;不服不行&#xff0c;不是这块料呀 系列文章历史&#xff1a; 朋友面神策数据库&#xff0c;第五个问题不会&#xff0c;直接再见 美女学姐面了美团阿里京东&#xff0c;这些经验实在太真实了 首先&#xff0c;来个背景介绍&#xff1a; 腾讯实…

关于阿里云服务器本地访问不了的问题

一&#xff1a;前几天公司购买了一台阿里云服务器&#xff0c;让我把之前的项目都移到阿里云服务器上&#xff0c;我为此专门的研究了一下阿里云服务器的基本操作和安装流程&#xff0c;这里我说一下我们公司的服务器配置如下&#xff1a; 系统就配置就是这个情况&#xff0c;下…

超硬核!十万字c++题,让你秒杀老师和面试官(上)

我发现呀&#xff0c;这大家对面试题的需求还是很大的&#xff0c;这里总结了上千道知识点&#xff0c;能换您一个收藏吗 C 引用和指针的区别&#xff1f; 指针是一个实体&#xff0c;需要分配内存空间。引用只是变量的别名&#xff0c;不需要分配内存空间。 引用在定义的时候…

当年,学姐把这份Java总结给我,让我在22k的校招王者局乱杀

可以说&#xff0c;学姐给我的这份文档真的把我的知识查漏补缺&#xff0c;面试问到了好多&#xff0c;值得收藏。 并发编程 一.Executor 为什么使用线程池&#xff1a;手动创建线程耗费性能&#xff0c;不利于管理。 首先创建线程池有两种方式&#xff1a;使用Executors工厂…

测试必经之路(探索性测试)

接下来&#xff0c;百万年薪测试方面也会有专题哦。 测试计划&#xff1a; 测试范围、方法、资源、进度、风险 测试报告&#xff1a; 就是把测试的过程和结果写成文档&#xff0c;对发现的问题和缺陷进行分析。 一、探索性测试 评估测试用例的标准 1 测试用例对被测对象的…

大学四年自学进BAT,私下存的资源/工具/网站我全贡献出来了

这些工具/网站是我横扫BAT的重要一步&#xff0c;甚至是决定性的一步。以后会更简历书写、面试笔试、大学学习、工具等文章。 大学四年&#xff0c;上课是不可能一直上课的&#xff0c;看课本也是不可能一直看课本的。 不是说老师教的不好&#xff0c;教材写的不好&#xff0c…

我是CSDN最硬核作者,谁赞成,谁反对?

也许是现在&#xff0c;也许是未来&#xff0c;我是全网最硬核的作者&#xff0c;最值得爱学习爱编程的崽崽们关注的作者。 一、介绍自己 哈喽大家好&#xff0c;我是兔老大&#xff0c;之前叫过兔兔兔兔兔兔、兔兔RabbitMQ等&#xff0c;反正都是兔子啦&#xff0c;自从大学…

当年,学姐总结奇安信18k常问面试题

她确实拿了18k&#xff0c;真人真事&#xff0c;也不是很高&#xff0c;我没必要编。 黑色字为问题&#xff0c;红色字为答案&#xff0c;空行为一个面试过程 自我介绍 家在哪&#xff0c;工作地 测试需要掌握啥 V模型W模型 最典型的V模型版本一般会在其开始部分对软件开发…

当年,兔子学姐靠这个面试小抄拿了个22k

本文顺序是操作系统&#xff08;jvm&#xff09;、网络、数据库&#xff08;mysql/redis&#xff09;&#xff0c;都是当时兔子的学姐准备面试的时候总结的&#xff0c;学生面试基本不会跑出这个范围&#xff0c;懂行的应该能看出来。 学姐原话&#xff1a;因为我本身的知识是A…

学姐,来挑战字节最牛部门

字节&#xff08;分布式图数据库研发工程师&#xff09;真实面经&#xff0c;其实是个学长&#xff0c;但是同学们都叫他学姐&#xff0c;可能是因为帅到把女生都比下去了。 本系列历史文章&#xff1a; 最强阿里巴巴历年经典面试题汇总&#xff1a;C研发岗 关于我的那些面经…

学姐百度实习面经(轻松拿offer)

本系列历史文章&#xff1a; 学姐&#xff0c;来挑战字节最牛部门 最强阿里巴巴历年经典面试题汇总&#xff1a;C研发岗 关于我的那些面经——百度后端&#xff08;附答案&#xff09; 《关于我的那些面经》滴滴Java岗&#xff08;附答案&#xff09; 朋友面神策数据库&am…

超硬核!兔兔阿里p7学长给的面试知识库

一个阿里p7学长给的nosql面试知识库&#xff0c;绝对真实&#xff0c;学会了去面呀。 最近整理了一下超硬核系列的文章和面经系列的文章&#xff0c;可以持续关注下&#xff1a; 超硬核系列历史文章&#xff1a;&#xff08;我保证每篇文章都有值得学习的地方&#xff0c;并…

Tomcat 6.0配置连建池的方式:

1.连接池的概念&#xff1a; JNDI解释:JNDI全称JavaNamingandDirectoryInterface(java命名和目录服务)用于定位查找服务对象。 2.使用连接池的优点(企业开发中常用) 3.在Tomcat6.0中配置连接池的步骤如下&#xff1a; (1).在tomcat/conf目录下找到context.xml文件&#xff0c;在…

FIX三天日记-FIX简介

由于作者还未在真实项目中实践&#xff0c;以下知识均限于学习&#xff0c;有些知识来源网络&#xff0c;不保证绝对准确。 一、FIX是什么&#xff1f; 是一个适用于实时证券和金融电子交易开发、不受单一实体控制的开放的数据通信标准&#xff0c;此协议能够被调整适用于任何…

FIX三天日记-quick fix简介

一、介绍 fix协议在上篇已经学习了&#xff0c;不再介绍。 QuickFIX是一款C实现的开源FIX引擎&#xff0c;同时提供Python等多种语言实现&#xff0c;具体看quickfix git地址 官网已经介绍如何编译quickfix、配置文件字段含义等等&#xff0c;我假设你可以看懂&#xff0c;用…

兔老大的系统设计(一)健康度系统

本系列用大白话&#xff0c;手把手带你实现上百个BAT公司内部真实的常用中型系统。评论抽奖送书 与培训班/营销号/忽悠人的低水平作者&#xff0c;不同的是&#xff1a; 保证听懂&#xff08;小白也可以&#xff0c;这是我的一贯风格&#xff0c;字典式小白式的输出&#xff0…

兔老大的系统设计(二)定时系统(延时队列)

之前文章&#xff1a; 兔老大的系统设计&#xff08;一&#xff09;健康度系统 一、背景 延迟队列的应用场景非常广泛&#xff0c;如客户主动操作&#xff1a; 股票定投顾客预约场景会员定时续费/缴费CSDN定时发布或系统内部操作&#xff1a; 订单成功后&#xff0c;在30分…

新鲜美团测试岗面经(带答案)

1、测试环境搭建过程 2、 验证环境部署是否成功时 跑测试用例 接口是什么样的&#xff1f;&#xff08;服务对外提供的调用接口&#xff09; 3、 数据库 表 有个字段 name字段 nameliuguoge 唯一标识id3 修改nameguogeliu update user set nameguogeliu where id3; 4、写…

如何实现Oracle数据库之间的数据同步?

我们都知道&#xff0c;在Oracle数据库的管理与开发工作中&#xff0c;总会存在着一些表数据和基础资料数据&#xff0c;这时需要有效的将这些数据库进行同步合并&#xff0c;有没有什么简单的方法可以实现Oracle数据库之间的数据同步呢&#xff1f;在此诚恺科技重庆服务器频道…