![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 69
写的不是代码
不积跬步无以至千里
展开
-
回溯 算法
/ 恢复当前组合new_combination = combination。// 2: 定义回溯所需的组合combination,索引index。//按需更新当前组合 new_combination。// 上述可能使用for遍历选择列表 或者使用 if更新。for (选择列表) { // 或者if。// 1: 定义返回的结果集合res。if (满足题目要求的目标) {// 4: 结束 return。// 3: 撤销选择。// 3: 调用回溯函数。原创 2023-03-20 22:32:29 · 240 阅读 · 0 评论 -
剑指Offer算法题(C++)
面试题1:整数除法基础知识:整数的数据类型包括 32位int(-2^31 ~ 2^31 -1) , 16位short (-2^15 ~ 2^15 -1)思路: 一个很直观的想法是基于减法实现除法。例如,为了求 19/2 可以从 19 中不断减去 2,那么减去 9 个 2 以后就剩下 1,可以得到 19/2 = 9,但是效率很低,当被除数是 n,除数是 1 的时候,算法复杂度最差为 O(n)。如果将上述解法做一些调整,当被除数大于除数时,继续判断是不是大于除数的 2 倍? 4 倍? 8 倍?....如果被除数原创 2022-06-19 16:39:45 · 459 阅读 · 0 评论 -
二叉树 算法
树:基本概念:数据结构与算法-树_Evan_L的博客-CSDN博客_数据结构与算法 树树的算法求解本质上:是递归运算树的遍历:前序:根左右;中序:左根右;后序:左右根1: 二叉树的中序遍历思路: 递归、 左根右.................................原创 2022-06-06 10:49:23 · 395 阅读 · 0 评论 -
栈/队列常见面试算法题(C++实现)
1: 实现最小栈思路: 建立两个栈,一个栈用来存放数据;一个栈用来存放当前最小栈。最小栈就是: 栈底到栈顶,元素递减,栈底元素最大,栈顶元素最小。2: 栈实现队列;思路: 一个栈存放栈数据;一个栈存放队列数据。栈到队列是通过栈顶出栈压入另一个栈实现。........................原创 2022-06-03 18:05:38 · 518 阅读 · 0 评论 -
链表面试常见考题(C++实现)
链表2: 单链表实现约瑟夫环约瑟夫环问题: 围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。思路:利用单链表数据结构,每次找到目标节点,之后将该节点从链表移除。更新当前的头节点,再次遍历寻找目标节点,之后剩下一个节点为止。3: 逆置/反转单链表反转链表: 1 2 3 4 5 反转原创 2022-05-31 21:08:06 · 752 阅读 · 0 评论 -
C++ 编程技巧
1:vector<int> res // 用vector声明一个数组, 元素为int类型unordered_map<int, int> m // 用unordered_map声明一个无序map, key为int, val为intres.size() // vector用.size()去求解大小或去计算元素个数m.count(key) // 查找hash_map中有没有这个key-val,返回个数res.push_back(i) // 向容器res尾部插......原创 2021-07-28 22:41:19 · 713 阅读 · 0 评论 -
Leetcode 算法题学习链接
转载:https://www.cnblogs.com/grandyang/p/4606334.html原创 2021-07-09 20:08:30 · 615 阅读 · 1 评论 -
C语言---leetcode每日一题(1)
556. 下一个更大元素 III给你一个正整数n ,请你找出符合条件的最小整数,其由重新排列 n中存在的每位数字组成,并且其值大于 n 。如果不存在这样的正整数,则返回 -1 。注意 ,返回的整数应当是一个 32 位整数 ,如果存在满足题意的答案,但不是 32 位整数 ,同样返回 -1 。示例 1:输入:n = 12输出:21示例 2:输入:n = 21输出:-1提示:1 <= n <= 231 - 1思路:看到题目后,有几个关键点: 1...原创 2021-03-28 17:10:56 · 556 阅读 · 0 评论 -
C语言数据结构与算法 ---滑动窗口
框架:滑动窗口的基本实现框架int FindSubArry(char* nums){ int start = 0; // 左指针,用于在不满足条件场景下的滑动窗口收缩,被迫移动 int end = 0; // 右指针,用于滑动窗口的向前移动,主动移动 // [start, end] 用于保存当前有效的遍历区间 int res = 0; // 存放结果 int len = strlen(nums); // 这个长度也是最后end移动的边界值(数组或字符串的长度)原创 2021-03-23 10:05:01 · 1684 阅读 · 0 评论 -
Python数据结构与算法---数组(二)
1:买卖股票的最佳时机 II输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。思路: 贪心法class Solution(object): def maxProfit(self, prices)...原创 2021-01-25 21:35:16 · 224 阅读 · 0 评论 -
C语言Leetcode每日记录
1: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 【21】示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/*server.c*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>typede原创 2020-12-22 12:01:05 · 363 阅读 · 0 评论 -
利用C库qsort函数对二维数组进行排序
C 库函数void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))对数组进行排序。base-- 指向要排序的数组的第一个元素的指针。 nitems-- 由 base 指向的数组中元素的个数。 size-- 数组中每个元素的大小,以字节为单位。 compar-- 用来比较两个元素的函数。代码Demo/*server.c*/#include <st...原创 2020-12-22 11:03:26 · 1526 阅读 · 0 评论 -
C语言你不得不知道的小知识
C语言你不得不知道的小知识:1: 常见的变量修饰关键字:static、const、extern、volatile、registerstatic:(该变量保存在全局静态区)a.修饰局部变量——>会提升局部变量的生存周期(此时局部变量可以理解为全局变量)b.修饰全局变量——>作用域被限制——>被限制到当前的原文件中 c.修饰函数——>作用域被限制——>被限制到当前的原文件中const:(该变量保存在常量区)1.声明常变量,,使得指定的变量不能被修改。2.修饰函数.原创 2020-12-21 11:52:06 · 358 阅读 · 0 评论 -
C语言数据结构与算法----数组
1:盛水最多的容器/*server.c*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>#define MIN(x, y) (((x)>(y))?(y):(x))int maxArea(int* height, int heightSize){ int left = 0; int right = heightS原创 2020-11-20 09:17:49 · 218 阅读 · 0 评论 -
C语言数据结构与算法--栈
1:逆波兰表达式:逆波兰表达式(Reverse Polish Notation):有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9分析:栈遍历数组,逐渐压入栈中,如果遇到运算字符,则弹出栈顶两个元素,之后将计算结果再压入栈中/*server.c*/#include <stdio.h>#include <std原创 2020-11-17 14:59:29 · 178 阅读 · 0 评论 -
C语数据结构与算法--字符串
1:无重复字符的最长子串输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 思路:一次遍历;同时建立字...原创 2020-11-16 15:41:05 · 212 阅读 · 0 评论 -
C语言数据结构与算法--两数相加
/*server.c*/#include <stdio.h>#include <stdlib.h>#include <string.h>// Definition for singly-linked list.struct ListNode { int val; struct ListNode* next;};typedef struct ListNode ListNode;ListNode* addTwoNumbers(List.原创 2020-11-14 18:55:54 · 651 阅读 · 0 评论 -
Postgresql学习链接
一个值得你收藏的宝藏之地:https://github.com/bkfish/Postgresql原创 2020-11-07 11:13:18 · 157 阅读 · 0 评论 -
线程池基础知识与代码走读
#include <stdlib.h>#include <pthread.h>#include <unistd.h>#include <assert.h>#include <stdio.h>#include <string.h>#include <signal.h>#include <errno.h>#include "threadpool.h"#define DEFAULT_TIME 10.原创 2020-10-08 20:36:19 · 292 阅读 · 0 评论 -
epoll反应堆模型代码
/* *epoll基于非阻塞I/O事件驱动 */#include <stdio.h>#include <sys/socket.h>#include <sys/epoll.h>#include <arpa/inet.h>#include <fcntl.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <.原创 2020-10-06 20:38:12 · 301 阅读 · 0 评论 -
C语言数据结构与算法每日系列(1)两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方法(1):暴力法#include <stdio.h>#include <stdlib.h>i...原创 2020-09-12 10:29:36 · 223 阅读 · 0 评论 -
python数据结构与算法——栈
1:逆波兰表达式:逆波兰表达式(Reverse Polish Notation):有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9分析:栈遍历数组,逐渐压入栈中,如果遇到运算字符,则弹出栈顶两个元素,之后将计算结果再压入栈中...原创 2019-08-18 11:13:55 · 332 阅读 · 0 评论 -
python数据结构与算法——链表
1:两数相加给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807分析:对应节点一一相加;注意...原创 2019-08-16 21:18:29 · 453 阅读 · 0 评论 -
Python数据结构与算法-字符串
1:字符串的循环左移给定一个字符串s[0..........N-1],要求把S的前k个字符移动到S的尾部,如把字符串"abcdef"前面的2个字符'a','b'移动到字符串的尾部得到'cdefab',即左移k循环左移k=循环右移n-k核心公式:XY to YX(X'Y')'=YXdef stringLeftReverse(s,n,k): s=[i for i in s...原创 2019-08-15 22:17:41 · 966 阅读 · 0 评论 -
Python数据结构与算法——常见算法题
1:求解最大连续子数组,A=[0,........,n-1],求A的连续子数组,使得该子数组和最大。(1):暴力搜索(时间复杂度O(n^3))#暴力搜索,三层循环,注意循环的起始变量def MaxSubArray(A,n): res=[] MaxSum=A[0] for i in range(n): for j in range(i,n): ...原创 2019-08-14 18:38:29 · 732 阅读 · 0 评论 -
python数据结构与算法--回溯算法
回溯算法:一种优先搜索算法(试探法);按优条件向前搜索,以达目标;当试探到某步,发现原来选择并不好(走不通),就退回重新选择。回溯算法的一般步骤:1:定义问题的解空间(搜索中动态生成);2:确定易搜索的解空间结构(一般为树形结构或图);3:以深度优先的方式搜索解空间,搜索中用剪枝函数避免无效搜索。剪枝函数:1:用约束函数在扩展节点处减去不满足约束条件的子树;2:用限界函数减去不能得到最优解...原创 2019-08-19 15:10:20 · 6998 阅读 · 4 评论 -
Python实现数据结构与算法——排序
1:冒泡排序:冒泡顾名思义从下往上。两两相邻元素比较进行排序。时间复杂度:O(n^2),空间复杂度O(1)。稳定def BubbleSort(s,n): #两层循环 for i in range(n-1): #注意循环起始边界 for j in range(i+1,n)[::-1]:#注意循环起始边界 j从i+1开始循环,[::-1]表示倒取(从下而上)...原创 2019-08-04 22:07:39 · 372 阅读 · 0 评论