已知完全二叉树和每条边的权值,q次询问,每次给出sta起点和H。 w=(H-点到sta的权值),求w>0的所有w的加和。 这题用树上前缀和来写,e[i]记录子树上的点到点i的距离,sum[i][j]为e[i]的前缀和 这样每次找到满足大于h-len[i]的长度就行(二分查找) void init() ...
分类:
其他好文 时间:
2020-02-13 17:11:47
阅读次数:
65
懒得写二分查找,结果发现stdlib里自带了二分查找。 C 库函数 void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void ...
分类:
其他好文 时间:
2020-02-13 13:04:57
阅读次数:
96
"题目链接" 【题解】 如果没有旋转这么一说。 那么问题就是一道普通的二分查找的题目。 加上旋转之后。也没有让这个题变难多少。 问题的关键在于。 在二分查找的时候。 能够想到用nums[0]这个元素来确定当前二分枚举到的元素是在哪一个区间里面的。 即是在左边那个上升区间里面,还是在右边那个上升区间里 ...
分类:
编程语言 时间:
2020-02-10 10:05:41
阅读次数:
48
总结一句话就是:思路很简单,细节是魔鬼,hhhh。 本博客探究几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。 寻找一个数(基本的二分搜索) + 为什么 while 循环的条件中是 = target) { // 注意点3 right = mid; } else if (nums[m ...
分类:
其他好文 时间:
2020-02-09 20:08:27
阅读次数:
144
二分查找:有序数组按照二分方式来查找数据 递归方法: //递归方式: int mid = l + (r-l)/2;//中间 if(l==r) return -1;//没有找到的情况 if(finddata==a[mid]) return mid; if(finddata>a[mid]) return ...
分类:
编程语言 时间:
2020-02-09 15:02:39
阅读次数:
67
Leetcode 第175场周赛 题解 检查整数及其两倍数是否存在 数据范围小的可怜,$O(n^2)$ 解法可行。如果范围大一点,可以先进行排序然后遍历每一个数进行二分查找,时间复杂度 $O(nlogn)$ 代码是平方解法。 制造字母异位词的最小步骤数 那既然能随便换,哈希一波看看有多少个不一样,因 ...
分类:
其他好文 时间:
2020-02-09 14:42:59
阅读次数:
112
Description Input and Output Codes描述#1128 : 二分·二分查找DescriptionNettle最近在玩《艦これ》,因此Nettle收集了很多很多的船(这里我们假设Nettle氪了很多金,开了无数个船位)。去除掉重复的船之后,还剩下N(1≤N≤1,000,00... ...
分类:
其他好文 时间:
2020-02-08 13:58:07
阅读次数:
71
需要重点以下10种数据结构和10种算法: 10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树 10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法 ...
分类:
编程语言 时间:
2020-02-08 13:41:32
阅读次数:
88
leedcode 69. x 的平方根 注意边界条件和判断条件 mid int存不下要用long long long long mid=lower+(upper-lower)/2 取上界 long long mid=lower+(upper-lower+1)/2 取下界 class Solution ...
分类:
编程语言 时间:
2020-02-08 12:03:05
阅读次数:
77
插值查找算法类似于二分查找,不同的是插值查找的每次从自适应mid出开始,这和二分查找升级版用到的是一个方法 int mid = left + (right - left) * (findVal - arr[left]) / (arr[right] - arr[left]); 含义:预测数字出现的位置 ...
分类:
其他好文 时间:
2020-02-08 11:55:53
阅读次数:
75