题目描述
实现函数 atoi 。函数的功能为将字符串转化为整数
提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。
示例1
输入
1 | "123" |
返回值
1 | 123 |
输入
1 | "123a4" |
返回值
1 | 123 |
1 | import java.util.*; |
实现函数 atoi 。函数的功能为将字符串转化为整数
提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。
示例1
输入
1 | "123" |
返回值
1 | 123 |
输入
1 | "123a4" |
返回值
1 | 123 |
1 | import java.util.*; |
难度中等631
给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
示例 1:
1 | 输入: num1 = "2", num2 = "3" |
示例 2:
1 | 输入: num1 = "123", num2 = "456" |
说明:
num1
和 num2
的长度小于110。num1
和 num2
只包含数字 0-9
。num1
和 num2
均不以零开头,除非是数字 0 本身。1 | public String multiply(String num1, String num2) { |
请实现支持’?’and’*’.的通配符模式匹配
‘?’ 可以匹配任何单个字符。
‘*’ 可以匹配任何字符序列(包括空序列)。
返回两个字符串是否匹配
函数声明为:
bool isMatch(const char *s, const char *p)
下面给出一些样例:
isMatch(“aa”,”a”) → false
isMatch(“aa”,”aa”) → true
isMatch(“aaa”,”aa”) → false
isMatch(“aa”, “*”) → true
isMatch(“aa”, “a*”) → true
isMatch(“ab”, “?*”) → true
isMatch(“aab”, “dab”) → false
示例1
输入
1 | "ab","?*" |
返回值
1 | true |
1 | public class Solution { |
题目描述
实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
示例1
输入
1 | [[1,3],[1,2],[1,1],[3],[2],[3]] |
返回值
1 | [1,2] |
备注:
1 | 有三种操作种类,op1表示push,op2表示pop,op3表示getMin。你需要返回和op3出现次数一样多的数组,表示每次getMin的答案 |
普通栈保存所有的数字
最小栈保存当前最小的数字
最小栈入栈规则:
如果当前的栈为空,那么入栈
如果当前的数字大于栈顶元素,不入栈
如果当前的数字小于等于栈顶元素,入栈
1 | import java.util.*; |
难度简单893
设计一个支持 push
,pop
,top
操作,并能在常数时间内检索到最小元素的栈。
push(x)
—— 将元素 x 推入栈中。pop()
—— 删除栈顶的元素。top()
—— 获取栈顶元素。getMin()
—— 检索栈中的最小元素。示例:
1 | 输入: |
提示:
pop
、top
和 getMin
操作总是在 非空栈 上调用。1 | class MinStack { |
难度困难1288
给你一个只包含 '('
和 ')'
的字符串,找出最长有效(格式正确且连续)括号子串的长度。
示例 1:
1 | 输入:s = "(()" |
示例 2:
1 | 输入:s = ")()())" |
示例 3:
1 | 输入:s = "" |
提示:
0 <= s.length <= 3 * 104
s[i]
为 '('
或 ')'
遇到左括号入栈,遇到右括号出栈,
1 | class Solution { |
1 | public class Solution { |
1 | public class Solution { |
有一个部门表departments简况如下:
有一个,部门员工关系表dept_emp简况如下:
有一个职称表titles简况如下:
汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的员工的title以及该类型title对应的数目count,结果按照dept_no升序排序
1 | select |
1 | select |
有一个,部门关系表dept_emp简况如下:
有一个部门经理表dept_manager简况如下:
有一个薪水表salaries简况如下:
获取员工其当前的薪水比其manager当前薪水还高的相关信息,
第一列给出员工的emp_no,
第二列给出其manager的manager_no,
第三列给出该员工当前的薪水emp_salary,
第四列给该员工对应的manager当前的薪水manager_salary
以上例子输出如下:
1 | SELECT de.emp_no,dm.emp_no manager_no, |
1 | **查询员工当前工资表 emp_sal** |
有一个薪水表salaries简况如下:
对所有员工的薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列:
不加group by查出来只有一条数据
1 | SELECT s1.emp_no, s1.salary, COUNT(DISTINCT s2.salary) AS t_rank |
难度中等257收藏分享切换为英文接收动态反馈
给你一个整数数组 nums
,你可以对它进行一些操作。
每次操作中,选择任意一个 nums[i]
,删除它并获得 nums[i]
的点数。之后,你必须删除每个等于 nums[i] - 1
或 nums[i] + 1
的元素。
开始你拥有 0
个点数。返回你能通过这些操作获得的最大点数。
示例 1:
1 | 输入:nums = [3,4,2] |
示例 2:
1 | 输入:nums = [2,2,3,3,3,4] |
提示:
1 <= nums.length <= 2 * 10^4
1 <= nums[i] <= 10^4
通过预处理数组将该问题转换成打家劫舍问题
若选择了 $x$,则可以获取$ \textit{sum}[x]$ 的点数,且无法再选择 $x-1$ 和 $x+1$。这与打家劫舍中的描述是一样的(相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。)的意思是一样的。 所不同的是:这个题目里面是对数字的相邻做了要求,可以使用哈希表来实现数字的相邻的判断,这样就可以将原先的问题转换到打家劫舍问题上来。
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
参考文献
1 | SELECT |
1 | select |
注意: 在排序自连接中,如果有count并且不加group by 关键字只能查出来一条数据,如果加上group by关键字,那么可以查出来多条数据
1 | SELECT s1.emp_no, s1.salary, COUNT(DISTINCT s2.salary) AS t_rank |
1 | SELECT s1.emp_no, s1.salary, COUNT(DISTINCT s2.salary) AS t_rank |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true