自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

【Dyson】的博客

神码都是浮云

  • 博客(44)
  • 收藏
  • 关注

转载 Linux中的setenv与export

一. setenv中文名:改变或增加环境变量英文名:setenv头文件:#include<stdlib.h>函数定义:int setenv(const char *name,const char * value,int overwrite);函数说明:setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。参数 value则为变量内容,参数o...

2018-09-27 16:05:01 1438

转载 fork与vfork的使用和区别

fork和vfork()函数都可以创建一个新的进程。主要的两个区别如下:1.vfork()函数在创建子进程时,不会复制父进程的所有资源,相反,子进程共享父进程的内存,   直至其成功执行了exec()或者调用_exit()退出;2.vfork()函数创建的子进程最后必须调用_exit()函数才能正确退出子进程,不能使用exit()函数。为了更便于理解fork()和vfork()两个...

2018-09-27 11:32:41 2599

原创 排序算法之归并排序 ( C语言版 )

归并排序 :(Merge Sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并, 使用中牺牲空间换取时间的算法 归并算法核心步骤为 : 分解 合并图片来源  ---  https...

2018-09-27 10:53:30 35389 4

原创 排序算法之交换排序( 冒泡排序 & 快速排序(三种实现方法及其优化,非递归) ) ( C语言版 )

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡...

2018-09-26 17:15:48 794

原创 排序算法之选择排序( 选择排序 & 堆排序 )

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法   【直接选择排序】在元素集合array[i]–array[n-1]中选择关键码最大(小)的数据元素 若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中 的最后一...

2018-09-26 13:24:39 246

原创 C语言中一些有关于字符串的库函数 ( 源函数 )

strlen  计算字符串大小// 计数器方法int my_strlen(const char * str) { int count = 0; while(*str) { count++; str++; } ...

2018-09-20 23:48:36 1040

原创 LeetCode 82-- 删除排序链表中的重复元素 II ( Remove Duplicates from Sorted List II ) ( C语言版 )

题目描述 : 代码如下 (附有解析 ):/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* hea...

2018-09-19 17:02:18 268

原创 LeetCode 138--复制带随机指针的链表 ( Copy List with Random Pointer ) ( C语言版 )

题目描述 : 解题思路 : ( 复杂链表的复制 )  传送门 -- https://blog.csdn.net/ds19980228/article/details/81033631代码如下 : /** * Definition for singly-linked list with a random pointer. * struct RandomListNode { *...

2018-09-18 17:07:11 456

原创 LeetCode 24--两两交换链表中的节点 ( Swap Nodes in Pairs ) ( C语言版 )

题目描述  : 解题思路 : 分为两种情况处理 , 当要交换的节点是链表的前两个节点时 , 当交换的节点非前两个节点时 ;代码如下 : /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */stru...

2018-09-18 16:26:31 636

原创 LeetCode 21--合并两个有序链表 ( Merge Two Sorted Lists ) ( C语言版 )

题目描述 : 方法一 : 递归合并代码如下 : /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* ...

2018-09-18 15:54:40 528

原创 剑指offer ( 面试题 32) -- 从1到n整数中1出现的个数

题目描述 : 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。解题思路 : 入下图所示将数据中每一位拿出来单独处理 , 为一位记为...

2018-09-17 20:56:37 2056

原创 LeetCode 215 -- 数组中的第K个最大元素 ( Kth Largest Element in an Array ) ( C语言版 )

题目描述 : 解题思路 : 解法一  : 看到题目第一时间就想到了 , 使用堆 , 这里可以直接建一个大小为k的小堆 , 然后将数组中元素依次与堆顶元素比较 , 比堆顶元素大入堆 , 并更新堆顶元素 , 比堆顶元素小则不处理 , 当数组遍历完之后 , 第k个最大元素就是堆顶元素 , 该方法时间复杂度为 O(n) , 但是由于还没学到java ,不可能现撸一个小堆出来 ,        ...

2018-09-17 16:16:02 377

原创 LeetCode 557-- 反转字符串中的单词 III ( Reverse Words in a String III ) ( C语言 )

题目描述 : 解题思路 : 计算出空格的个数count , 然后用控制要反转单词顺序的次数 , 用 left 和 right 分别记录每次反转单词的开始和结尾代码如下 : char* reverseWords(char* s) { int len=strlen(s); if(len<=1) return s; //count初始化为1...

2018-09-16 18:47:38 249

原创 LeetCode 236 -- 二叉树的最近公共祖先 ( Lowest Common Ancestor of a Binary Tree ) ( C语言版 )

题目描述 : 方法一:代码如下(附有解析):/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */struct TreeNode* Fi...

2018-09-16 17:57:32 421

原创 LeetCode 235--二叉搜索树的最近公共祖先 ( Lowest Common Ancestor of a Binary Search Tree ) ( C语言版 )

题目描述 : 解题思路 : 根据题目描述 , 会发现共同祖先要么是根节点 , 要么是左节点 ,要么是右节点 , 当给定的两个节点都大于根节点时 , 往右子树寻找 , 当两个节点都小于根节点时 , 往左子树寻找 ;代码如下 : /** * Definition for a binary tree node. * struct TreeNode { * int val;...

2018-09-16 17:25:18 505

原创 LeetCode 11 --盛水最多的容器 ( Container With Most Water ) ( C语言版 )

题目描述 : 代码如下 ( 附有解析 ) :int maxArea(int* h, int hz) { //如果数组只有一个元素,返回0 if(hz==1) return 0; //如果数组只有两个元素,直接返回最小值 if(hz==2) return h[0]>h[1]?h[1]:h[0]; int le...

2018-09-16 15:11:49 389

原创 LeetCode 2--两数相加 ( Add Two Numbers ) ( C语言版 )

题目描述 : 代码如下   ( 附有解析 ) : /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* addTwoNumbers(struct ListNode* l...

2018-09-16 09:28:03 2449

原创 LeetCode 55 -- 跳跃游戏 ( Jump Game ) ( C语言版 )

题目描述 : 解题思路 : 本题目不能一开始从最大长度进行跳跃 , 应该一次次遍历每个数组元素 , 采用贪心法 , max表示每次能够到达的最远距离 , 使用max=max<i+nums[i]?i+nums[i]:max; 求出上一步的最优解 , 当max小于i的时候证明已经不可能到达终点了 , 直接返回false , 当i走到末尾时则证明可以达到最后的位置 .代码如下 : ...

2018-09-15 22:53:16 1648

原创 LeetCode 63 -- 不同路径 II ( Unique Paths II ) ( C语言版 )

题目描述  :  解题思路 : 机器人每次只能向下或者向右走 , 我们可以用一个二维数组记录机器人每走到一个位置时 , 所经历的可能性 , 而当它走到一个位置时所经历的可能性就是( x-1 , y )和 (x ,y-1 ) 走法之和 , 但是这里有一个问题就是遇到障碍物是如何计算 如下图所示 : 当我们遇到障碍物时就将障碍物坐标对应的位置赋0 , 当我们在处理第一行和第一列时 , ...

2018-09-15 17:38:16 790

转载 贪心算法问题

一、概念1. 贪心法(Greedy Algorithm)定义        求解最优化问题的算法通常需要经过一系列的步骤,在每个步骤都面临多种选择;        贪心法就是这样的算法:它在每个决策点作出在当时看来最佳的选择,即总是遵循某种规则,做出局部最优的选择,以推导出全局最优解(局部最优解->全局最优解)2. 对贪心法的深入理解        (1)原理:一种启发式...

2018-09-15 15:44:37 20601 2

原创 LeetCode 122 --买卖股票的最佳时机 II ( Best Time to Buy and Sell Stock II ) ( C语言版 )

题目描述 : 代码如下 : int maxProfit(int* p, int ze) { int ret=p[0]; int n=0; for (int i=1;i<ze;i++){ //判断是否可以交易 if(p[i]>ret) //将所有交易的利润累加起来 n+=...

2018-09-14 18:30:38 222

原创 LeetCode 121--买卖股票的最佳时机( Best Time to Buy and Sell Stock ) ( C语言版 )

题目描述 : 代码如下 : int maxProfit(int *prices, int len){ int max=0,i=0,temp; for(int j=1;i<len&&j<len;j++){ temp=prices[j]-prices[i]; ...

2018-09-14 18:22:55 270

原创 LeetCode 190--颠倒二进制位 ( Reverse Bits ) ( C语言版 )

题目描述 : 使用左移操作符和右移操作符 , 每次使用m的末位和n右移后按位与 , m向左跑 , n向右跑代码如下 : uint32_t reverseBits(uint32_t n) { uint32_t m=0; for(int i=0;i<32;i++){ m<<=1; m|=(n&1); ...

2018-09-14 18:15:51 1051

原创 LeetCode 3-- 无重复字符的最长子串 ( Longest Substring Without Repeating Characters )

题目描述 : ​思路 : 这里可以借助位图的思想去解决该问题 , 位图传送门 -- https://blog.csdn.net/ds19980228/article/details/82592294使用两个指针 , 一个快指针 , 一个慢指针 , 快指针先走 , 每走一步,判断快指针所指字符在位图中是否已经存在,不存在,存储字符信息并继续走,直到快指针指向重复字符串 ,  若快指针-...

2018-09-14 17:17:57 130

原创 LeetCode 31--下一个排列 ( Next Permutation )

题目描述: : : 根据题目所给条件 : 输入 : 1 , 2 , 3    →   1 , 3 , 2          1 , 3 , 2     →   2 , 1 , 3          2 , 1 , 3     →   2 , 3 , 1          2 , 3 , 1     →   3 , 1 , 2          3 , 1 , 2     →...

2018-09-13 20:39:08 153

原创 LeetCode 264--丑数 II ( Ugly Number II ) ( C语言版 )

题目描述 : 当我们去遍历查找第n个丑数时 , 则会出现超出时间限制 ;据观察可知丑数就相当于三个已排序数组的合集1*2 2*2 3*2 4*2 5*2 6*2 8*2 .......'1*3 2*3 3*3 4*3 5*3 6*3 8*3 .......1*5 2*5 3*5 4*5 5*5 6*5 8*5 .......当前丑数都是由上一个丑数乘以质因数得到的 , 那么...

2018-09-13 10:22:07 632

原创 LeetCode 202--快乐数 ( Happy Number ) ( C语言版 )

题目描述 : 在这里首先了解一个小知识 , 当快乐数始终变不了1 , 陷入无限循环时 , 最终得到的结果就会是4 , 所以只需要判断结果是否等于4 , 如果为4 , 则就不是快乐数代码如下 : int Num(int x){ int ret=0; while(x){ ret+=(x%10)*(x%10); x/=10; ...

2018-09-13 09:12:51 2702

原创 海量数据面试题

位图应用 : 题目一 : 位图应用给定100亿个整数,设计算法找到只出现一次的整数思路 : 用位图 , 当元素存放时判断该位是不是已经有元素存放过 , 若存放过则不处理 , 否则进行存放题目二 : 给两个文件分别有100亿个整数,我们只有1G内存,如何找到两个文件交集思路 : 我们可以用两个位图 , 两个位图可以组成用两个为组成三种状态 , 都不存在 ( 0 0 ) , 都存在 ( ...

2018-09-12 22:55:49 396

转载 关于strncpy这个函数

来源 : https://blog.csdn.net/sinat_30071459/article/details/72771137

2018-09-12 16:28:02 284

原创 LeetCode--28 实现strStr() ( Implement strStr() ) ( C语言版 )

题目描述 : 代码如下 : int strStr(char* haystack, char* needle) { int hlen=strlen(haystack); int nlen=strlen(needle); //如果needle为空字符串,则nlen为0,返回0 if(nlen==0) return 0; //注意之处...

2018-09-11 20:57:32 283 1

原创 LeetCode--62 不同路径 ( Unique Paths ) ( C语言版 )

题目描述 : 解题思路 : 机器人每次只能向下或者向右走 , 所以左边界和上边界都只有一种走法接下来的 ( x , y ) 的走法就是 ( x-1 , y )和 (x ,y-1 ) 走法之和 , 当走到最右下方时结束 , 总共需要的步数就是循环结束后 ( x-1 , y-1 ) 坐标所存的数值代码如下 : int uniquePaths(int m, int n) { i...

2018-09-11 19:11:31 429 1

原创 数据结构--哈希扩展 ( 布隆过滤器 )

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。基本概念 : 如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着...

2018-09-11 17:21:06 394

原创 大小段字节序基本常识 & 如何判断当前机器的字节序

大端存储模式 : 是指数据的低位字节序保存在内存的高地址中, 而数据的高位字节序, 保存在内存的低地址中;小端存储模式 : 是指数据的低位字节序保存在内存的低地址中, 而数据的高位字节序, 保存在内存的高地址中;通过上图可以看出 a 和 b 分别以补码的形式存储在内存当中 , 但是存储的顺序确是反过来的 , 这是因为在 VS2013 编译器上数据存储模式是小端字节序存储 , 是由低地址...

2018-09-10 21:00:23 2011

原创 数据结构--哈希变形 ( 位图 )

解决问题 : 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中 . 当我们遇到这个问题时,可能第一时间会想到哈希搜索, 但是仔细发现 , 当我们使用哈希去解决该问题时 , 就会发现1KB=1024Byte 1MB=1024KB 1G=1024MB 而10亿个Byte大约就是1G , 40亿个Byte大约就是4G , 而题中条件为无符号整数 , 那...

2018-09-10 18:17:53 283

原创 排序算法之插入排序( 直接插入 & 希尔 ) ( C语言版 )

插入排序基本思想 : 每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去,直到元素全部插完为止。【直接插入排序】:当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序 进行比较,找到插入位置即将array...

2018-09-10 16:15:06 1016

原创 LeetCode--删除排序数组中的重复项 II (Remove Duplicates from Sorted Array II ) ( C语言版 )

题目描述 : 解题思路 : 这里和之前删除排序数组中的重复项的解决方法一样, 只需要用一个flag去标记即可删除排序数组中的重复项 --传送门--https://blog.csdn.net/ds19980228/article/details/82531923代码如下 : int removeDuplicates(int* nums, int n) { int ret...

2018-09-08 22:17:47 199

原创 LeetCode--删除排序数组中的重复项( Remove Duplicates from Sorted Array ) ( C语言版 )

题目描述 : 解题思路 : 我们只需要去从一个位置 i 开始寻找数组中和 ret 不相等数的数, 然后将寻找到的数放到该位置的上, 更新ret, 再去寻找下一个和 ret 不相等的数, 然后再次更新ret, 最后ret的大小就代表了数组中所有不相等数的数量代码如下 : int removeDuplicates(int* nums, int n) { int ret=0,i...

2018-09-08 18:19:17 374

原创 Linux项目自动化构建工具-make/Makefile 彩色进度条

make是一个命令工具, 一个用来解释makefile中指令工具 makefile可以" 自动化编译 ", 一旦写好, 只需要一个make命令, 工程就可以自动完成编译 make是一条命令, makefile是一个文件, 两者搭配使用, 完成项目自动化构建 makefile里边写的为依赖关系和依赖方法, 而依赖方法必须以Tab开头下面就以一个小程序( 进度条 )介绍一下make/Makef...

2018-09-08 18:04:16 434

原创 啊哈 , 算法 !--深度优先搜索( C语言版 )

深度优先搜索 : 理解的关键在于解决“当下该如何做”。至于“下一步该如何做”则与“当下该如何做”是一样的问题 : 求出123的全排列123   132   213   231   312   321这里我们可以用一个a数组去存放要排列的数组, 再用一个book数组去标记哪些数已经被使用了 . 代码如下 : #include <stdio.h>#include &l...

2018-09-08 10:42:41 3836 1

原创 啊哈,算法 !--火柴棍公式 ( C语言版 )

题目 : 假如现手中有m(m<=24)个火柴棍,希望拼出A+B=C等式。等式中的A、B、C均为火柴棍拼出来的整数(若该数非0,则最高位不能为0)。注意:1、加号与等号各自需要2根火柴棍; 2、如果A不等于B,则A+B=C与B+A=C视为不同的等式(三者均大于0); 3、所有根火柴棍必须全都用上。思路:24根除去 '+' 和 '=' 4根还有20根,而数字1所需火柴棍最少,需2根...

2018-09-07 16:45:40 2343 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除