编程题
孤单心碎青
这个作者很懒,什么都没留下…
展开
-
回文数的非字符串解法
9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。代码如下:class Solution { public boolean isPalindrome原创 2020-12-17 19:55:52 · 134 阅读 · 0 评论 -
教你如何打家劫舍
198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示原创 2020-12-14 17:24:21 · 138 阅读 · 0 评论 -
归并排序的思想解决逆序对和翻转对问题
剑指 Offer 51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5代码如下://通用解法: 归并排序。时间复杂度高。class Solution { public int reversePairs(int[] nums) { if (nums == null || nums.length == 0) return 0;原创 2020-11-29 14:13:36 · 281 阅读 · 2 评论 -
最短超串(滑动窗口解法)
面试题 17.18. 最短超串假设你有两个数组,一个长一个短,短的元素均不相同。找到长数组中包含短数组所有的元素的最短子数组,其出现顺序无关紧要。返回最短子数组的左端点和右端点,如有多个满足条件的子数组,返回左端点最小的一个。若不存在,返回空数组。示例 1:输入:big = [7,5,9,0,2,1,3,5,7,9,1,1,5,8,8,9,7]small = [1,5,9]输出: [7,10]示例 2:输入:big = [1,2,3]small = [4]输出: []代码如原创 2020-11-26 19:28:43 · 376 阅读 · 0 评论 -
字符串中找出连续最长的数字串(双解法)
字符串中找出连续最长的数字串 读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例1输入abcd12345ed125ss123456789输出123456789代码如下:/**通过遍历判断元素是不是数字,如果是数字,用StringBuilder加上,然后看后续是不是有数字串,如果有比较大小,在这代码中要注意最后一次,如果是以数字结尾就要判断.原创 2020-11-26 19:28:02 · 392 阅读 · 0 评论 -
连续数组 java解法
525. 连续数组给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。注意: 给定的二进制数组的长度不会超过50000。方法一:暴力法public class Solution { public int findMaxLe原创 2020-11-24 15:55:04 · 283 阅读 · 0 评论 -
数组中的逆序对java解答
剑指 Offer 51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5代码如下:class Solution { int res; public int reversePairs(int[] nums) { int len = nums.length; if (len == 0 || nums == nul原创 2020-11-24 00:20:59 · 202 阅读 · 0 评论 -
最常见的单词(详细解)
819. 最常见的单词给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."banned = ["hit"]输出: "ball"解释:原创 2020-11-23 17:02:42 · 120 阅读 · 0 评论 -
设计哈希映射(详解)
706. 设计哈希映射不使用任何内建的哈希表库设计一个哈希映射具体地说,你的设计应该包含以下的功能put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。remove(key):如果映射中存在这个键,删除这个数值对。示例:MyHashMap hashMap = new MyHashMap();hashMap.put(1, 1); hashMap.p原创 2020-11-23 16:15:53 · 708 阅读 · 0 评论 -
设计哈希集合(详细解释)
705. 设计哈希集合不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。示例:MyHashSet hashSet = new MyHashSet();hashSet.add(1); hashSet.add(2); hashSet.原创 2020-11-23 16:14:01 · 510 阅读 · 0 评论 -
寻找第K大(多种解法以及扩展思维)
寻找第K大 题目描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。示例1输入[1,3,5,2,2],5,3返回值2代码如下:import java.util.*;//有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。//给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。/** * findKth:.原创 2020-11-21 00:42:00 · 260 阅读 · 0 评论 -
最长公共子串(两种解法)
最长公共子串题目描述给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。示例1输入"1AB2345CD","12345EF"返回值"2345"备注:1 ≤∣str1∣,∣str2∣≤5000代码如下:import java.util.*;public class Solution { /** * longest common substring * @param str1 string字符串 the s原创 2020-11-19 22:49:22 · 3103 阅读 · 0 评论 -
前K个高频单词(详细代码解答)
692. 前K个高频单词给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 "i" 在 "love" 之前。示例 2:输入: ["the", "原创 2020-11-17 19:21:27 · 351 阅读 · 1 评论 -
树的子结构和树的子树的区别
另一个树的子树剑指 Offer 26. 树的子结构以上题来源:力扣这两道题的区别:首先我们要区分这两者的区别,那么就好理解了树的子结构:B是A的子结构, 即 A中有出现和B相同的结构和节点值。(约定空树不是任意一个树的子结构)例如:给定的树 A: 3/ \4 5/ 1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。另一个树的子树:示例 1:给定的树 s: 3/ \4 5/ 1 2给定的树 t原创 2020-11-16 21:35:58 · 334 阅读 · 0 评论 -
根据一棵树的中序遍历与后序遍历构造二叉树(超简单理解)
根据一棵树的中序遍历与后序遍历构造二叉树。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode buildTreeChild(int[] i原创 2020-11-16 21:12:11 · 880 阅读 · 0 评论 -
根据一棵树的前序遍历与中序遍历构造二叉树(超简单)
根据一棵树的前序遍历与中序遍历构造二叉树。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { int preIndex = 0; public TreeNode原创 2020-11-16 20:27:52 · 552 阅读 · 0 评论 -
找出单向链表中倒数第 k 个节点。返回该节点的值
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的 k 保证是有效的。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */clas原创 2020-10-20 21:41:15 · 385 阅读 · 0 评论