
算法
学习数据结构或算法时的题目,我做出来的答案都会记录在这里面
云雾海
杂七杂八地学,杂七杂八地写
展开
-
算法:两数之和(哈希算法)
题目来源LeetCode:https://leetcode-cn.com/problems/two-sum分析具体思想可以参考这个题解的演示:https://leetcode-cn.com/problems/two-sum/solution/tu-jie-guan-fang-tui-jian-ti-jie-liang-s-02xs/,LeetCode中使用的哈希算法是通过uthash.h这个文件实现的,该文件本来是个开源项目,目前已整合到gcc中,关于其使用请参考uthash的文档:https://t原创 2022-04-05 20:16:44 · 628 阅读 · 0 评论 -
算法:两数之和(暴力枚举)
题目来源LeetCode:https://leetcode-cn.com/problems/two-sum我的程序/** * Note: The returned array must be malloced, assume caller calls free(). */int* twoSum(int* nums, int numsSize, int target, int* returnSize){ int* ret = NULL; *returnSize = 0; i原创 2022-04-05 20:16:15 · 290 阅读 · 0 评论 -
算法:二分查找
题目来源浙大数据结构MOOC-PTA的课后题题目内容分析就是个普通的二分查找,没啥好分析的。我的程序Position BinarySearch( List L, ElementType X ){ Position left, right; left = 1; right = L->Last; while(left <= right) { Position middle = (left + right) / 2; //原创 2022-04-02 19:15:43 · 380 阅读 · 0 评论 -
算法:Maximum Subsequence Sum
题目来源浙大数据结构MOOC-PTA的课后题题目内容分析这一题时最大子列和问题的变形,需要输出最大子列和的子列首项与末项,且在数列全为负的情况下,最大子列和为0,且需要输出首尾。而且如果出现了前后有相同都是最大子列的情况,选择前面的那一个。我继续沿用了最大子列和问题中的在线处理算法,但是加上了对子列首尾的处理。说实话这题有点难,我的做法也稍微有点取巧,使用专门的标志来处理非正有0的情况,不过总体来说结果是过了。我的程序#include <stdio.h>int main()原创 2022-04-02 19:09:57 · 1537 阅读 · 0 评论 -
算法:最大子列和问题
题目来源浙大数据结构MOOC-PTA的课后题题目内容分析这个程序在课程里讲过,一共有四种方法,其中两种是同一种方法,只是进行了优化,这道题没有什么好分析的,直接写就行了。我的程序暴力穷举:#include <stdio.h>int main(){ // 获取数据 int size; scanf("%d", &size); int num[size]; int max = 0, this = 0; for(int i原创 2022-04-02 18:44:42 · 1169 阅读 · 0 评论