![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法-数据结构
文章平均质量分 69
小笼包包包包
要相信前面总会有更好的等着你。
展开
-
编程题(二)
具体而言,快速幂算法将指数n表示为其二进制形式,然后通过递归或迭代的方式将幂运算拆解成若干个平方和乘法的运算,以实现快速求解幂运算的目的。由于递归会重复计算相同的结果,所以创建一个数组来保存 f(n) 的值,所以每次计算之前判断一下 f(n) 是否计算过,若之前计算过,直接返回即可。在动态规划中的应用:矩阵快速幂可以用来优化某些动态规划算法的时间复杂度,比如: Fibonacci 数列的计算、矩阵的乘法、字符串的匹配等问题。动态规划:动态规划是将问题分解成更小的子问题,并保存子问题的解,以避免重复计算。原创 2024-03-17 11:20:49 · 832 阅读 · 0 评论 -
编程题(一)
由于Java中不能实现自动扩容,所以需要新建一个字符数组(C++不用),遍历原来的字符串,当遇到空格时,向其添加“%20”;数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。交换的过程中,如果发现已有元素的值和下标相等,则将该重复的元素返回。解题思路二:创建一个哈希表,依次遍历元素,如果该元素不存在表中,将该元素加入;利用栈后进先出的特性,创建一个栈,先把遍历结果存入栈中,最后再弹出栈中元素。原创 2024-03-14 16:39:57 · 893 阅读 · 0 评论 -
冒泡排序。
再依次比较两个元素,使得第二大的数排到倒数第二个位置,完成第二趟排序。邻近的两个数进行比较,如果左边的数大于右边的数,将两个数进行交换。重复上述操作,使得最大的元素排到最后,完成第一趟排序。若一共有n个元素,则需要比较 n-1 趟。第二次比较,16比27小,不需要调换位置。第四次比较,27比30小,不需要调换位置。第五次比较,30比49小,不需要调换位置。第一次比较,9比16小,不需要调换位置。第三次比较,27比23大,调换位置。第六次比较,49比21大,调换位置。第七次比较,49比35大,调换位置。原创 2024-03-03 15:38:55 · 146 阅读 · 0 评论 -
快速排序(重要)
从待排的序列中任意选取一个元素(一般选第一个)作为分界值,与离它最远的元素进行比较。经过一趟下来形成:左边子序列(都比分界值小),分界值,右边子序列(都比分界值大)。左边序列选择27为分界值与13进行比较,右边序列选择76为分界值与65进行比较。左边序列27与38进行比较,右边序列76为分界值与97进行比较。再将左右两个序列按照上述方法进行排序,直到分不出子序列为止。此时,49大于左边的所有元素,小于右边的所有元素。将所有比它小的元素放在左边,比它大的放在右边。选择49为分界值,与最远的元素27进行比较。原创 2024-03-03 11:07:02 · 318 阅读 · 0 评论