自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (1)
  • 收藏
  • 关注

原创 剑指 Offer 67. 把字符串转换成整数

把字符串转换为整数

2022-06-08 11:10:11 158 2

原创 剑指 Offer 56 - II. 数组中数字出现的次数 II

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

2022-06-01 15:21:11 161

原创 剑指 Offer 56 - I. 数组中数字出现的次数

一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。

2022-06-01 14:46:13 170

原创 剑指 Offer 46. 把数字翻译成字符串

问题描述(原题链接)  给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。代码:class Solution { public int translateNum(int num) { //动态规划 String str = String.valueOf(num);

2022-05-30 21:31:27 104

原创 剑指 Offer 43. 1~n 整数中 1 出现的次数

问题描述(原题链接)  输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。代码:暴力超时class Solution { public int countDigitOne(int n) { //暴力 int res=0; for(int i=1;i<=n;i++){ res+=calcu(i);

2022-05-30 20:38:01 60

原创 剑指 Offer 30. 包含min函数的栈

问题描述(原题链接)  定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。代码:超时class MinStack { /** initialize your data structure here. */ Stack<Integer> stack1; Stack<Integer> stack2; Stack<Integer> st

2022-05-25 20:09:37 51

原创 剑指 Offer 25. 合并两个排序的链表

问题描述(原题链接)  输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode mergeTwoLi

2022-05-25 10:15:34 64

原创 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

问题描述(原题链接)  输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。代码:额外空间class Solution { public int[] exchange(int[] nums) { int[] res = new int[nums.length]; int left =0; int right = nums.length-1; for(int i=0;

2022-05-24 17:17:11 52

原创 剑指 Offer 19. 正则表达式匹配

问题描述(原题链接)  请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。代码:class Solution { public boolean isMatch(String s, String p) { //动态规划 int

2022-05-24 16:44:03 78

原创 剑指 Offer 18. 删除链表的节点

问题描述(原题链接)  给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动代码:双指针/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution {

2022-05-24 15:26:27 54

原创 剑指 Offer 16. 数值的整数次方

问题描述(原题链接)  实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。代码:普通写法class Solution { public double myPow(double x, int n) { //这种计算不能通过全部输入 if(n==0) return 1; if(n>=1) return x*myPow(x,n-1);

2022-05-24 14:38:48 50

原创 剑指 Offer 13. 机器人的运动范围

问题描述(原题链接)  地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?代码:class Solution { int num=0;

2022-05-23 10:44:33 51

原创 剑指 Offer 12. 矩阵中的路径

问题描述(原题链接)  给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。代码:class Solution { public boolean exist(char[][] board, String word) { //回溯

2022-05-23 10:06:57 51

原创 剑指 Offer 09. 用两个栈实现队列

问题描述(原题链接)  用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )代码:class CQueue { Stack<Integer> stack1; Stack<Integer> stack2; public CQueue() { stack1 = new S

2022-05-21 11:23:47 48

原创 剑指 Offer 07. 重建二叉树

问题描述(原题链接)  输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } *

2022-05-21 11:12:24 120

原创 剑指 Offer 06. 从尾到头打印链表

问题描述(原题链接)  输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public int[] reversePrint(Lis

2022-05-21 10:43:49 114

原创 剑指 Offer 05. 替换空格

问题描述(原题链接)  请实现一个函数,把字符串 s 中的每个空格替换成"%20"。代码:调用APIclass Solution { public String replaceSpace(String s) { String temp = s.replace(" ","%20"); return temp; }}一次遍历class Solution { public String replaceSpace(String s) {

2022-05-21 10:31:16 60

原创 剑指 Offer 04. 二维数组中的查找

问题描述(原题链接)  在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。代码:class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { int line = matrix.length; if(line==0)

2022-05-21 10:24:05 59

原创 剑指 Offer 03. 数组中重复的数字

问题描述(原题链接)  找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。代码:class Solution { public int findRepeatNumber(int[] nums) { HashSet<Integer> set = new HashSet<Integer>();

2022-05-17 21:48:52 51

原创 LeetCode:739. 每日温度

问题描述(原题链接)  给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。代码:class Solution { public int[] dailyTemperatures(int[] temperatures) { //递减栈 int len = temperatures.length;

2022-05-16 23:11:33 70

原创 LeetCode:621. 任务调度器

问题描述(原题链接)  给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。  然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。  你需要计算完成所有任务所需要的 最短时间 。代码:class Solution {

2022-05-16 22:52:29 226

原创 LeetCode:581. 最短无序连续子数组

问题描述(原题链接)  给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。代码:class Solution { public int findUnsortedSubarray(int[] nums) { //去掉左边重叠部分、右边重叠部分 int[] temp = Arrays.copyOf(nums,nums.length);

2022-05-16 22:30:09 111

原创 LeetCode:560. 和为 K 的子数组

问题描述(原题链接)  给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。代码:class Solution { int res=0; public int subarraySum(int[] nums, int k) { //前缀和数组 int len = nums.length; int[] presum = new int[len+1]; presum[0]=0;

2022-05-16 22:14:05 132

原创 LeetCode:538. 把二叉搜索树转换为累加树

问题描述(原题链接)  给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。  提醒一下,二叉搜索树满足下列约束条件:  节点的左子树仅包含键 小于 节点键的节点。  节点的右子树仅包含键 大于 节点键的节点。  左右子树也必须是二叉搜索树。代码:/** * Definition for a binary tree node. * public clas

2022-05-16 14:20:39 41

原创 LeetCode:494. 目标和

问题描述(原题链接)  给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1” 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。代码:回溯法class Solution { private int res =0 ; p

2022-05-16 11:30:07 34

原创 LeetCode:438. 找到字符串中所有字母异位词

问题描述(原题链接)  给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。代码:第一种思路:比较子字符串,有问题class Solution { public List<Integer> findAnagrams(String s, String p) { List<Integer> list = new ArrayLis

2022-05-16 10:47:57 840

原创 LeetCode:437. 路径总和 III

问题描述(原题链接)  给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tre

2022-05-16 10:17:11 56

转载 LeetCode:617. 合并二叉树

问题描述(原题链接)  给你两棵二叉树: root1 和 root2 。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。代码:/** * Definition for a binary tree node. * publi

2022-05-15 17:50:52 49

原创 LeetCode:448. 找到所有数组中消失的数字

问题描述(原题链接)  给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。代码:class Solution { public List<Integer> findDisappearedNumbers(int[] nums) { Set<Integer> set = new HashSet<Integer>

2022-05-15 17:24:21 776

原创 LeetCode:416. 分割等和子集

问题描述(原题链接)  给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。代码:回溯超时class Solution { boolean finalres = false; public boolean canPartition(int[] nums) { //回溯法 Arrays.sort(nums); int len = nums.length;

2022-05-15 17:13:39 111

原创 LeetCode:406. 根据身高重建队列

问题描述(原题链接)  假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。  请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。代码:class Soluti

2022-05-15 16:12:07 870

原创 LeetCode:394. 字符串解码

问题描述(原题链接)  给定一个经过编码的字符串,返回它解码后的字符串。  编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。  你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。  此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。代码:class Solution { public

2022-05-14 21:17:37 157

原创 LeetCode:347. 前 K 个高频元素

问题描述(原题链接)  给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。代码:class Solution { public int[] topKFrequent(int[] nums, int k) { //优先级队列 PriorityQueue<int[]> q = new PriorityQueue<int[]>(new Comparator<int[]&g

2022-05-14 20:32:44 62

原创 LeetCode:338. 比特位计数

问题描述(原题链接)  给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。代码:常规做法class Solution { public int[] countBits(int n) { //常规算法 int[] res = new int[n+1]; res[0]=0; for(int i=1;i<=n;

2022-05-14 20:15:46 189

原创 LeetCode:337. 打家劫舍 III

问题描述(原题链接)  小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。  除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。  给定二叉树的 root 。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额 。代码:/** * Definition for a binary tree node. * pub

2022-05-14 20:02:23 131

原创 LeetCode:322. 零钱兑换

问题描述(原题链接)  给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。代码:class Solution { public int coinChange(int[] coins, int amount) { //动态规划 int[] dp = new int[amount+

2022-05-14 19:39:40 152

原创 LeetCode:312. 戳气球

问题描述(原题链接)  有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。 这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字为 1 的气球。求所能获得硬币的最大数量。代码:class Solution { pu

2022-05-14 17:50:28 54

原创 LeetCode:309. 最佳买卖股票时机含冷冻期

问题描述(原题链接)  给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。​设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。代码:class Solution { public int maxProfit(int[] prices) { int len

2022-05-14 16:57:50 57

原创 LeetCode:301. 删除无效的括号

问题描述(原题链接)  给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。代码:class Solution { List<String> res = new ArrayList<String>(); public List<String> removeInvalidParentheses(String s) { //回溯法

2022-05-14 16:37:10 106

原创 LeetCode:300. 最长递增子序列

问题描述(原题链接)  给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。  子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。代码:class Solution { public int lengthOfLIS(int[] nums) { //动态规划,nums[i] = max(nums[j]) int len = nums.le

2022-05-12 19:03:38 99

openssl+lurl+jsoncpp库.zip

本人因用到调用摄像头拍照然后识别文字,所以开发了移动APP调用百度OCR接口;在PC端利用VS2013 openssl lurl jsoncpp 和opencv 也成功实现调用摄像头然后拍照识别文字的功能。该资源就是我花了将近一天配置的openssl lurl jsoncpp库。

2019-07-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除