数学
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 · 225 阅读 · 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 · 190 阅读 · 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 · 159 阅读 · 0 评论 -
5457. 和为奇数的子数组数目
题目这道题不知道为什么开始一直想不明白,看到前几名的大佬们都是几分钟就搞定了,日常感叹自己的菜啊…这道题主要使用前缀和。若到当前为止前缀和为奇数,那么前面有多少个前缀和为偶数的,当前就有多少个子数组和为奇数的(奇数+偶数=奇数);同理,若当前前缀和为偶数,则子数组和为奇数的个数=前缀和为奇数的个数。class Solution {public: int numOfSubarrays(vector<int>& arr) { long long even=0原创 2020-07-27 09:10:55 · 321 阅读 · 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 · 388 阅读 · 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 · 121 阅读 · 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 · 153 阅读 · 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 · 321 阅读 · 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 · 724 阅读 · 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 · 931 阅读 · 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 · 118 阅读 · 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 · 167 阅读 · 0 评论 -
9. 回文数
题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。要求:不将整数转为字符串来解决这个问题考虑将数字翻转,然后比较是否一致。存在问题:可能翻转后会溢出考虑将数字一分为2,翻转后半个数字,然后和前半个比较是否一致。怎样判断已经是一半数字?当前数是x,那么会一直x%10,x/10;当当前数已经小于等于后面的翻转数时,代表已经一半了。首先要判断一些特殊情况:1)所有个位是 0 的数字不可能是回文,因为最高位不等于 02)负数class Solution原创 2020-06-10 10:37:56 · 121 阅读 · 0 评论
分享