数字
java
是瓜哥啊
这个作者很懒,什么都没留下…
展开
-
把数组排成最小的数
把数组排成最小的数输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”提示:0 < nums.length <= 100解法:lambdaclass Solution { public String minNumber(int[] nums) { List<String&原创 2021-03-29 12:50:38 · 71 阅读 · 0 评论 -
构建乘积数组
构建乘积数组给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]解法class Solution { public int[] constructArr(int[] a) { if(a.lengt原创 2021-03-28 21:26:40 · 57 阅读 · 0 评论 -
数组中数字出现的次数 II
数组中数字出现的次数 II在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1解法:HashMapclass Solution { public int singleNumber(int[] nums) { Map<Integer,Integer> map=new Hash原创 2021-03-28 12:55:33 · 194 阅读 · 0 评论 -
数组中数字出现的次数
数组中数字出现的次数一个整型数组 nums里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]解法:异或x&-xclass Solution { // 假设结果数为A B public int[] si原创 2021-03-27 17:19:05 · 90 阅读 · 0 评论 -
不用加减乘除做加法
不用加减乘除做加法写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2提示:a, b 均可能是负数或 0结果不会溢出 32 位整数解法:位运算参考class Solution { public int add(int a, int b) { int c=0; while(b!=0){ c=(a&b)<&l原创 2021-03-26 16:06:23 · 49 阅读 · 0 评论 -
打印从1到最大的n位数
打印从1到最大的n位数输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]class Solution { //先定义几个需要用到的全局变量 //初始化结果数组res int[] res; //Math.pow返回的是double char[] nums; char[] loop = {'0','1',原创 2021-03-23 16:45:28 · 93 阅读 · 0 评论 -
约瑟夫环
0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2解法一:数学解法参考class Solution { publi.原创 2021-03-18 12:41:15 · 50 阅读 · 0 评论 -
进制转换
进制转换/相加给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数import java.util.*;public class Solution { /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ public String solve (int M, int N) { // write原创 2021-03-11 15:10:15 · 83 阅读 · 0 评论 -
各位相加
各位相加给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。进阶: 你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?解法一:模九法x100+y10+z=x99+y9+x+y+z(此规律不适用于9的倍数)9的倍数相加都等于9(因为我们的bai数学是十进du制的。给9一个zhi1会变成另外一个1(进一位)da原创 2021-03-01 13:28:58 · 136 阅读 · 0 评论 -
阶乘后的零
阶乘后的零给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.解法尾数后的0来源于25,每隔5个数就有一个5(2的个数多于5),每隔25个数就有55,每隔125个数就有555…参考public int trailingZeroes(int n) { int count = 0; while (n原创 2021-03-01 13:05:32 · 104 阅读 · 0 评论 -
字符串相乘
字符串相乘给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字0 本身。 不能使用任何标准库原创 2021-02-27 11:42:35 · 152 阅读 · 0 评论 -
字符串转换整数
字符串转换整数请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整原创 2021-02-27 00:05:11 · 359 阅读 · 0 评论 -
回文数
回文数给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文原创 2021-02-26 21:38:52 · 71 阅读 · 0 评论