shenke的文章

Java 分治策略实现快速排序

0 条评论 算法 Java 算法 shenke

Thought

  • Divide: Partition the array into two subarrays around a pivot x such that elements in lower subarray ≤ x ≤ elements in upper subarray.
  • Conquer: Recursively sort the subarrays.
  • Combine: Trivial.

以枢轴 x 为中点,每次排序将小于枢轴 x 的元素都放在 x 左边,大于 x 的元素都放在 x 右边,然后递归以同样方式对子数组排序


微信小程序:生成随机且不重复字符

0 条评论 JavaScript 微信小程序 小程序 shenke

Thought

第一步,产生一个随机 code

第二步,从数据库中查询这个 code

第三步,判断,若已存在则退回第一步,若不存在则返回这个 code

不难发现这是一个递归的过程,而跳出递归的条件就是中途出错或者已经找到不重复的 code。


Java 建立大顶堆

0 条评论 算法 Java 算法 shenke

Thought

  • 从最后一个有孩子的父节点开始调整,若父节点的值小于左右孩子结点的值(如果有的话),就与该孩子结点交换位置。若发生了交换,由于原来父节点到了他的孩子结点上,可能破坏了现在这颗以原来父节点为根节点的子树,所以需要重复以上步骤,即递归。
  • 数组的范围是从 0 ~ length - 1,设父节点的下标为 p,则:
p的左孩子下标为:2 * p + 1
p的右孩子下标为:2  *p + 2

最后一个有孩子的父节点下标为(length - 2)/ 2


记录整数反转的溢出问题

0 条评论 LeetCode Java leetcode shenke

Leetcode simple problem: Reverse Integer

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [Integer.MIN_VALUE, Integer.MAX_VALUE]。请根据这个假设,如果反转后整数溢出那么就返回 0