数学
leetcode数学类
超喜欢榴莲吖
许愿未来温暖阳光,满身宠爱
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
43. 字符串相乘
题目 方法一:先乘法再加法 按照平时做乘法的思路即可。 这里比较巧妙的一点是,直接用字符形式做乘法和加法,对于移位问题,就通过填补0来直接处理。自己第一次做的时候就是因为没有想到这个方法,所以必须转为整数才能实现。 class Solution { public String multiply(String num1, String num2) { if(num1.equals("0")||num2.equals("0")){ return "0";原创 2020-08-13 10:03:25 · 248 阅读 · 0 评论 -
93. 复原IP地址
题目 递归。 官网解析如下: 递归的编写水平还是太低了,主要还是思想上不到位。 class Solution { static final int SEG_COUNT=4; List<String> ans=new ArrayList<String>(); int[] segment=new int[SEG_COUNT]; public List<String> restoreIpAddresses(String s) {原创 2020-08-10 07:29:35 · 201 阅读 · 0 评论 -
415. 字符串相加
题目 这道题很简单,主要是对自己的丑代码和非常漂亮的代码做个对比,希望之后能向着这个方向努力。代码风格还是非常重要的。 Java中要学会用StringBuffer,其中append方法可以对int,char,double等自动进行转换,转为符合字符串的条件。 class Solution { public String addStrings(String num1, String num2) { int i = num1.length() - 1, j = num2.length(原创 2020-08-03 08:10:51 · 179 阅读 · 0 评论 -
5457. 和为奇数的子数组数目
题目 这道题不知道为什么开始一直想不明白,看到前几名的大佬们都是几分钟就搞定了,日常感叹自己的菜啊… 这道题主要使用前缀和。若到当前为止前缀和为奇数,那么前面有多少个前缀和为偶数的,当前就有多少个子数组和为奇数的(奇数+偶数=奇数);同理,若当前前缀和为偶数,则子数组和为奇数的个数=前缀和为奇数的个数。 class Solution { public: int numOfSubarrays(vector<int>& arr) { long long even=0原创 2020-07-27 09:10:55 · 360 阅读 · 0 评论 -
Leetcode--拓扑排序
207. 课程表 题目 拓扑排序典型题。采用逐步删除入度为0点的方法。 class Solution { public: bool canFinish(int numCourses, vector<vector<int>>& prerequisites) { vector<vector<int>> d(numCourses); int n=prerequisites.size(); vector原创 2020-07-26 11:52:54 · 408 阅读 · 0 评论 -
1025. 除数博弈
题目链接 博弈题一般可以通过递推打表找规律。 F【i】:数字为i时,先手的状态。 则只要i可以通过一步j转化到F[i-j]为败的状态,F【i】就是胜的状态。 打表可以看出来,如果N为奇数,先手败;N为偶数,先手胜。 也可以通过数学推导和证明得出上述结论。 class Solution { private: void dabiao(int N){ vector<bool> f(N+5,false); f[1]=false; f[2]=tru原创 2020-07-24 07:36:19 · 136 阅读 · 0 评论 -
矩阵快速幂
50. Pow(x, n) 题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 这里注意n的正反数越界问题。和leetcode 29. 两数相除这道题的注意点比较像,即当n取负数最小值时,其相反数会溢出。 class Solution { public double myPow(double x, int n) { double ans=1.0; double xx=x; int sign=1; long N=(long)原创 2020-07-15 22:16:39 · 165 阅读 · 0 评论 -
罗马数字
12. 整数转罗马数字 题目 这道题开始想的非常复杂,不知道怎么处理 I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。 这样三种特殊情况,想着分类讨论。 实际上,完全可以将这六个特殊字符和给出的七个字符合在一起,作为十三个字符一起讨论。 讨论时,采用贪心的思想,从最大到小依次排列递减。 具体看代码。 clas原创 2020-07-15 22:00:43 · 338 阅读 · 0 评论 -
leetcode 29. 两数相除
题目 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 示例 1: 输入: dividend = 10, divisor = 3 输出: 3 解释: 10/3 = truncate(3.33333…) =truncate(原创 2020-07-14 23:55:16 · 734 阅读 · 0 评论 -
数字之和系列
1. 两数之和 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9, 所以返回 [0, 1] 很简单的哈希表即可。 class Solution { public: vector<int>原创 2020-07-11 21:58:03 · 951 阅读 · 0 评论 -
15. 三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] class Solution { public: vector<vector<int>> threeSum(vecto原创 2020-06-12 16:49:57 · 126 阅读 · 0 评论 -
739. 每日温度
题目 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。 提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。 使用单调栈,栈内维护递减序列。 注意,栈中存放的是数原创 2020-06-11 21:12:49 · 178 阅读 · 0 评论 -
9. 回文数
题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 要求:不将整数转为字符串来解决这个问题 考虑将数字翻转,然后比较是否一致。存在问题:可能翻转后会溢出 考虑将数字一分为2,翻转后半个数字,然后和前半个比较是否一致。 怎样判断已经是一半数字?当前数是x,那么会一直x%10,x/10;当当前数已经小于等于后面的翻转数时,代表已经一半了。 首先要判断一些特殊情况: 1)所有个位是 0 的数字不可能是回文,因为最高位不等于 0 2)负数 class Solution原创 2020-06-10 10:37:56 · 130 阅读 · 0 评论
分享