Loading

随笔分类 -  算法

摘要:不用加减乘除做加法 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 示例: 输入: a = 1, b = 1 输出: 2 提示: a, b 均可能是负数或 0 结果不会溢出 32 位整数 解题思路:计算 5 + 17 其二进制为 00101 + 1 阅读全文
posted @ 2020-10-06 11:44 codeduck 阅读(455) 评论(0) 推荐(0) 编辑
摘要:参考:https://leetcode-cn.com/problems/qiu-12n-lcof/solution/qiu-12n-by-leetcode-solution/ 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语 阅读全文
posted @ 2020-10-06 10:55 codeduck 阅读(1131) 评论(0) 推荐(0) 编辑
摘要:俄罗斯乘法是一种两数相乘的算法 例如:计算 35*72 35 72 17 144 35 >> 1 72 << 1 8 288 17 >> 1 144 << 1 4 576 8 >> 1 288 << 1 2 1152 ... 1 2304 从上到下,对每一行,若左边的数字若为奇数,则将右边的数字取出 阅读全文
posted @ 2020-10-06 10:23 codeduck 阅读(571) 评论(0) 推荐(0) 编辑
摘要:回溯法有“通用解题法”之称。用它可以系统地搜索问题的所有解。 回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的搜索,逐层向其祖先结 阅读全文
posted @ 2020-09-01 17:03 codeduck 阅读(279) 评论(0) 推荐(0) 编辑
摘要:动态规划算法同分治算法类似。其基本思想是将待求解的问题分解为若干个子问题,先求解子问题,然后从这些子问题的解中得到原问题的解。与递归分治不同的点在于,动态规划使用一张表来记录所有已解决子问题的答案。不管该子问题以后是否被用到,只要它计算过,就将结果填入表中。这就是动态规划的基本思想。 通常可以按照以 阅读全文
posted @ 2020-09-01 16:37 codeduck 阅读(136) 评论(0) 推荐(0) 编辑
摘要:输入一个整数,计算出该整数对应二进制数中 1 的个数(整数包含正整数和负整数) public static void main(String[] args) { System.out.println(solution03(-4)); // 30 System.out.println(Integer. 阅读全文
posted @ 2020-08-13 10:54 codeduck 阅读(261) 评论(0) 推荐(0) 编辑
摘要:本文参考 主要思想:将集合不断拆分,排序并合并的过程 时间复杂度稳定O(NlogN) package com.jason.sort; /** * @program: LeetCode * @description: 归并排序 * @author: CodeDuck * @create: 2020-0 阅读全文
posted @ 2020-08-10 13:44 codeduck 阅读(108) 评论(0) 推荐(0) 编辑
摘要:斐波那契数学公式 算法问题:青蛙跳台阶 一直青蛙一次可以跳上 1 级台阶,也可以跳上二级台阶。 求该青蛙跳上一个 n 级台阶总共有多少中跳发。 解: 若只有一层台阶,则只有一种跳法 若有两层台阶,则有两种跳法 把 n 级台阶看作为 n 的函数,记为 f ( n ), 当 n > 2 时,第一次跳有两 阅读全文
posted @ 2020-08-08 10:11 codeduck 阅读(337) 评论(0) 推荐(0) 编辑
摘要:核心思想: 1、选取一个左边第一个元素为基数,从两头遍历集合( left、right 分别从两端索引) 2、判断 left 索引的值 大于 基数的 值,right 索引小于 基数的值 (right 先索引,然后 left 索引,当遇到符合的条件时停止索引) 3、交换两个索引的数值,然后继续遍历 4、 阅读全文
posted @ 2020-07-17 21:14 codeduck 阅读(120) 评论(0) 推荐(0) 编辑
摘要:本文参考 https://www.cnblogs.com/chengxiao/p/6129630.html 感谢大佬精心绘图! 主要思想: ​ 1、将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆 ​ 2、将堆顶元素与末尾元素交换,将最大元素"沉"到数组末端,同时接着重新调整堆的结构 ​ 阅读全文
posted @ 2020-07-17 14:18 codeduck 阅读(119) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示