数据结构与算法
stone_322
这个作者很懒,什么都没留下…
展开
-
LeetCode704二分查找
转自代码随想录思路这道题目的前提是数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大家看到题目描述满足如上条件的时候,可要想一想是不是可以用二分法了。二分查找涉及的很多的边界条件,逻辑比较简单,但就是写不好。例如到底是 while(left < right) 还是 while(left <= right),到底是right = middle呢,还是要right = middle - 1呢?大家转载 2021-10-23 20:35:05 · 93 阅读 · 0 评论 -
力扣151. 翻转字符串里的单词
力扣链接:151. 翻转字符串里的单词这一题我的解法里包含了多个子函数,可以说,这一题里面包含了好几个题目。这种解法思路清晰,容易理解,所以记录下来。C语言版:void swap(char* a, char* b){ char tmp = *a; *a = *b; *b = tmp;}char* reverse(char* s, unsigned int start, unsigned int end){ int i = start; int j =原创 2021-10-11 15:56:33 · 190 阅读 · 0 评论 -
常见排序算法代码实例
1.基本概念时间复杂度:https://www.cnblogs.com/wonker/p/11236988.html空间复杂度:https://www.cnblogs.com/wonker/p/11238418.html稳定排序:假设序列中有两个值相等的元素,在排序后,如果这两个元素的相对前后位置没有发生改变,则是稳定排序。例如:int a = {11, 2, a, b,10};其中,a=b=3,排序后a = {2 ,a , b, 10, 11},而不是a = {2 ,b , a, 10, 11}。原创 2021-09-28 08:26:21 · 132 阅读 · 0 评论 -
实现常用C语言字符串处理函数
1.strcpy()char *my_strcpy(char *s1, const char *s2){ char* p1 = s1; const char* p2 = s2; while (*p1++ = *p2++) { } return s1;}2.strlen()unsigned int my_strlen(const char* s){ const char* p = s; while (*p++) {原创 2021-07-29 17:00:44 · 83 阅读 · 0 评论 -
二叉树常用算法
#include <stdio.h>#include <stdlib.h>#define TElemType inttypedef struct BitNode{ TElemType data; struct BitNode* lchild; struct BitNode* rchild;}BiTNode, *BiTree;void CreatBiTree(BiTree T){ (T)->data = 1; (T)-&原创 2021-07-25 11:41:10 · 78 阅读 · 0 评论 -
链表算法练习题
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */1.删除单链表的重复结点力扣链接//方法一:struct ListNode* removeDuplicateNodes(struct ListNode* head){ struct ListNode *current = head; while(c原创 2021-07-24 17:04:15 · 105 阅读 · 0 评论