算法
文章平均质量分 83
wardoluo
这个作者很懒,什么都没留下…
展开
-
位运算应用场景(每遇更新)
1. and运算 &and运算通常用于二进制取位操作(1)例如一个数 and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。// 由于自动补全动作,1的前面位全部为0,只有最后1位为1,故前面每一位与1运算结果都是0// 而最后一位如果为0,即原数为偶数;如果为1,原数为奇数if((a & 1) == 1) System.out.println("a为奇数");if((a & 1) ==原创 2021-03-26 18:43:40 · 583 阅读 · 0 评论 -
算法题-Java实现:从 1 到 n 整数中 1 出现的次数(时间复杂度O(logn))
前言:仅仅是自己的做题思路及优化过程记录,非官方答案,仅供参考。题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。原始思路:遍历一次1~n,使用动态字符串StringBuilder.append将数据串起来,然后转化为char数组,再原创 2021-03-12 16:49:45 · 409 阅读 · 0 评论 -
杭电oj题目1002 A + B Problem II
【前言:只是一个记录自己的做法博,目前是在vs里能成功运行并通过其提供的两组数据,但是提交的话状态还是wrong,今晚就先记录到这里,明天在继续检查是错在哪个细节。】题目给的是两个数据相加,一开始我没有发现其范围过大,试着使用long 和long long进行过计算,都报错了,转念使用字符串来进行计算,当时已经想到了应该是两个字符串对应位置转换成数字进行计算并判断进位,然而还是有着偷懒想法,想...原创 2019-04-05 00:15:33 · 369 阅读 · 0 评论 -
LeetCode两数之和
题目描述:给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。暴力解法:public static int[] twoSum(int[] nums, int target) { int first = 0,end = 0; for (int i = 0; i < nums.length; i++) { .原创 2021-03-03 17:06:50 · 54 阅读 · 1 评论 -
构建乘积数组
题目要求:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。思路:实际上我们仔细看这张图,B[i]其实就是对角线划.原创 2021-02-15 22:56:20 · 162 阅读 · 0 评论