随笔分类 -  算法

求两数之和
摘要:(1)字符串表示两数 题目:输入两个非空二进制字符串且只包含数字 1 和 0。返回两数之和; 输入: a = "11", b = "1" 输出: "100" 1 class Solution { 2 public String addBinary(String a, String b) { 3 St 阅读全文

posted @ 2020-06-23 10:35 hdc520 阅读(287) 评论(0) 推荐(0) 编辑

算法之位操作
摘要:一、基本操作 (1)异或即^:针对二进制,相同为0,不同为1 1)交换律:a ^ b ^ c = a ^ c ^ b 2)任何数与0异或为任何数 0 ^ n = n (2)位与运算&:针对二进制每一位进行&操作,当都为1时才是1; (3)或操作|:针对二进制,有1即为1 二、应用 (1)异或 //给 阅读全文

posted @ 2020-04-29 11:25 hdc520 阅读(214) 评论(0) 推荐(0) 编辑

算法之数字运算
摘要:一、快速幂 (1)普通算法:求a^b%m的时间复杂度为O(b) (2)快速幂:求a^b%m的时间复杂度为O(logb) 比喻:我们已知 2^3 求 2^6,不就是 2^3 * 2^3嘛。快速幂就是这个原理;当遇到奇数时2 ^ 5,就是 2 * 2 ^ 4 。 求a ^ b快速幂的基本思路: 1)当b 阅读全文

posted @ 2020-03-23 20:55 hdc520 阅读(658) 评论(0) 推荐(0) 编辑

回溯法详解
摘要:一、概述 解决一个回溯问题,实际上就是一个决策树的遍历过程。只需要考虑以下三个问题: (1)路径:已经做出的选择。 (2)选择列表:也就是你当前所做出的选择。 (3)结束条件:也就是到达决策树底层,无法在做出的条件。 注意: (1)ans为全局变量 (2)路径最后新建如:ans.add(new Ar 阅读全文

posted @ 2020-03-22 21:40 hdc520 阅读(582) 评论(0) 推荐(0) 编辑

二分查找模板
摘要:一、二分查找先设定左侧下标 left 和右侧下标 right,再计算中间下标 mid每次根据 nums[mid] 和 target 之间的大小进行判断,相等则直接返回下标,nums[mid] < target 则 left 右移,nums[mid] > target 则 right 左移查找结束如果 阅读全文

posted @ 2020-02-18 12:15 hdc520 阅读(172) 评论(0) 推荐(0) 编辑

导航