
算法
算法题
Coooooooooool.
这个作者很懒,什么都没留下…
展开
-
反转单词顺序(面试常见算法题)
反转单词顺序题目描述:解题思路Java代码实现class Solution { public String reverseWords(String s) { // 1.去掉首尾的空格 s.trim(); // 2.定义两个指针方便截取字符串 int fast = s.length() - 1; int slow = fast; // 2.1 定义一个StringBuffer用来存储截取出来的字符串原创 2021-05-28 08:26:40 · 195 阅读 · 0 评论 -
剑指 Offer 56 - I. 数组中数字出现的次数
数组中数字出现的次数一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。题目解题思路代码class Solution { public int[] singleNumbers(int[] nums) { int x = 0, y = 0, n = 0, m = 1; for(int num : nums) // 1. 遍历异或原创 2021-05-03 02:18:35 · 842 阅读 · 1 评论 -
136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素题目解题思路代码class Solution { public int singleNumber(int[] nums) { int single = 0; for (int num : nums) { single ^= num; } return single; }}如果对你有原创 2021-05-02 02:52:34 · 929 阅读 · 1 评论 -
剑指 Offer 57 - II. 和为s的连续正数序列
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)题目解题思路代码class Solution { public int[][] findContinuousSequence(int target) { //创建一个list存数组 List<int[]> list = new ArrayList<>(); //当l>=r跳出循环 for (int l原创 2021-05-02 01:37:16 · 808 阅读 · 1 评论 -
算法:和为s的两个数字
和为s的两个数字题目描述: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。题解:双指针法代码实现class Solution { public int[] twoSum(int[] nums, int target) { int l = 0; int r = nums.length - 1; int sum = 0; while(l != r) {原创 2021-05-02 00:38:04 · 814 阅读 · 1 评论 -
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表难度:⭐⭐输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。????示例 1:输入:head = [1,3,2]输出:[2,3,1]解决方案: 栈的特点是后进先出,即最后压入栈的元素最先弹出/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(原创 2021-03-27 23:19:45 · 1349 阅读 · 1 评论 -
剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字难度:⭐题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0????解决方案:方法一:class Solution { public int minArray(i原创 2021-03-22 20:56:39 · 1345 阅读 · 1 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
剑指 Offer 10- II. 青蛙跳台阶问题难度:⭐题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100来源:力扣(LeetCode)????解决方案:设跳上原创 2021-03-21 16:37:15 · 1333 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
剑指 Offer 10- I. 斐波那契数列难度:⭐题目描述:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n原创 2021-03-21 16:00:27 · 1292 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
替换空格难度:⭐⭐????题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."来源:力扣(LeetCode)????解决方案:自己的方案:class Solution { public String replaceSpace(String s) { int stringLength = s.length(); char[] char原创 2021-03-18 23:00:35 · 1300 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找难度:⭐⭐⭐????题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [原创 2021-03-17 09:54:16 · 1296 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字想难度:⭐⭐????题目描述:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zho原创 2021-03-17 08:53:53 · 1185 阅读 · 0 评论 -
最长不含重复字符的子字符串
最长不含重复字符的子字符串请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke”原创 2021-04-16 08:14:50 · 1135 阅读 · 1 评论 -
两数之和
给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2示例1输入[3,2,4],6返回值[2,3]方法一:import java.util.*;public class Solution {原创 2021-04-14 14:06:24 · 1261 阅读 · 0 评论 -
最小的k个数
最小的k个数输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]class Solution { public int[] getLeastNumbers(int[] arr, int k) { int[] res = ne原创 2021-04-14 01:13:21 · 1433 阅读 · 0 评论 -
反转链表
输入一个链表,反转链表后,输出新链表的表头。示例1输入{1,2,3}返回值{3,2,1}解答:public class Solution { public ListNode ReverseList(ListNode head){ if(head == null) { return null; } ListNode pre = null; ListNode cur = head; List原创 2021-04-14 00:19:14 · 1151 阅读 · 0 评论