面试算法
文章平均质量分 62
&orange
主要用于总结平时学习的一些技术和踩过的一些坑,文章仅代表个人理解,有什么不对的地方,欢迎大家批评指正。
展开
-
算法高频题目
LRU等一些高频题目原创 2023-11-29 20:16:54 · 493 阅读 · 0 评论 -
位运算的题目
56. 数组中只出现一次的数字NowCoder题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次,找出这两个数。解题思路两个不相等的元素在位级表示上必定会有一位存在不同,将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。diff &= -diff 得到出 diff 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来。public void FindNumsAppearOnce(int[] nums原创 2021-01-12 21:17:21 · 94 阅读 · 0 评论 -
ListNode题目
判断链表是否有环//快慢指针能相遇说明有环!public class Solution { public boolean hasCycle(ListNode head) { if(head==null) return false; ListNode fast=head; ListNode slow=head; while(fast!=null&&fast.next!=null){原创 2020-09-05 00:32:15 · 262 阅读 · 0 评论 -
树的leetcode题目
101. 对称二叉树Difficulty: 简单给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?Solution public boolean isSymm原创 2020-08-30 13:13:17 · 128 阅读 · 0 评论 -
双指针题目
双指针技巧一般要求排序,然后从头尾指针,将复杂度降为O(n);反转数组中的元素。public static void reverse(int[] v, int N) { int i = 0; int j = N - 1; while (i < j) { swap(v, i, j); // this is a self-defined function i++; j--; }}找到字符串中所有字母异位词输原创 2020-06-04 22:49:54 · 157 阅读 · 0 评论 -
挑选代表(招商2019编程题)
题目描述我们有很多区域,每个区域都是从a到b的闭区间,现在我们要从每个区间中挑选至少2个数,那么最少挑选多少个?输入描述:第一行是N(N<10000),表示有N个区间,之间可以重复然后每一行是ai,bi,持续N行,表示现在区间。均小于100000输出描述:输出一个数,代表最少选取数量。示例1输入44 72 40 23 6输出4思路:首先排序;按照bi进行排...原创 2020-05-07 22:46:44 · 289 阅读 · 0 评论 -
动态规划题目
买卖股票的最佳时机II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, ...原创 2020-05-06 20:27:43 · 255 阅读 · 0 评论 -
和为K的子数组(前缀和应用)
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。思路:暴力的话,计算所有子数组;然后求和;这里可以利用前缀和思想;就是开辟一个数组;这里比如[1,1,1]计算和为A=[0,1,2,3],计算i到j的和,这里就可以直接用A[j+1]...原创 2020-04-23 22:11:16 · 208 阅读 · 0 评论 -
浦发银行上机代码整理
浦发银行上机代码整理回文数相加输入2,输出1+121; private static int addBackNumber(int n){ if(n==1) return 1; StringBuilder list=new StringBuilder(); for(int i=1;i<=n;i++){ ...原创 2020-04-17 21:52:26 · 1202 阅读 · 0 评论 -
DFS题目
leetcode79 单词搜索board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true 给定 word = “SEE”, 返回 true 给定 word = “ABCB”,返回 false解读:标准的DFS题目;这里我们可以考虑用visited数组保存是否访...原创 2020-04-17 19:09:45 · 115 阅读 · 0 评论 -
常见面试题目
跳跃游戏给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。思路:判断能否调到终点,即我们有一个变量记录当前能跳跃到最远的位置,如果他大于n-1说明能跳跃...原创 2020-04-17 17:05:27 · 111 阅读 · 0 评论 -
排序总结
快排class Solution { public int[] sortArray(int[] nums) { quickSort(nums,0,nums.length-1); return nums; } public static void quickSort(int[] arr, int low, int high) { if (a...原创 2020-04-04 18:55:01 · 165 阅读 · 0 评论 -
Java刷题常用语法总结
java刷题语法总结原创 2020-04-01 12:24:17 · 1277 阅读 · 1 评论 -
Java实现二维数组 指定顺序排序
一种简单做法是通过Arrays.sort()传入新的Compartor对象;来实现按照指定序列排序;比如我们想实现二维数组,按照第一列升序,第二列降序;那么可以这么写: Arrays.sort(arr, new Comparator<int[]>() { public int compare(int[] a, int[] b) { ...原创 2020-03-30 12:05:30 · 626 阅读 · 0 评论