Algorithms
文章平均质量分 65
「已注销」
程序员
展开
-
C实现 LeetCode->Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space.判断一个 整形是不是 回文,不能使用额外的空间 扩展 :(判断 一个字符串是不是回文 ;一个单链表是不是回文;一个栈是不是回文)//// PalindromeNumber.c/原创 2015-06-11 10:16:58 · 135 阅读 · 0 评论 -
C实现 LeetCode->Roman to Integer
Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.罗马字符串转换为 int int romanToInt(char* s) { int map[256] = { 0 }; map['I原创 2015-06-11 11:30:49 · 422 阅读 · 0 评论 -
C实现 LeetCode->Rotate List(双指针大法)(单链表 部分旋转)
Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NULL. 双指针,没什么难点。//// RotateLi原创 2015-06-22 11:38:55 · 476 阅读 · 0 评论 -
C实现 LeetCode->Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a link原创 2015-06-04 15:18:58 · 507 阅读 · 0 评论 -
C实现 LeetCode->Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.回文,英文palin原创 2015-06-06 18:13:36 · 432 阅读 · 0 评论 -
动态规划算法Dynamic Programming
/** * 动态规划算法 Dynamic Programming = Divide and Conquer + Memoization 动态规划是分治法的延伸。当递归分割出来的问题,一而再、再而三出现,就运用记忆法储存这些问题的答案,避免重复求解,以空间换取时间。 动态规划的过程,就是反覆地读取数据、计算数据、储存数据。 1: 动态规划算法一般用来求解原创 2015-06-05 14:06:44 · 1209 阅读 · 0 评论 -
C实现 LeetCode->Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. Fo原创 2015-06-06 16:25:09 · 412 阅读 · 0 评论 -
C实现 LeetCode-> TwoSum
Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, whe原创 2015-06-04 15:13:04 · 477 阅读 · 0 评论 -
C实现 LeetCode->Insertion Sort List(排序)(单链表)
/** * Sort a linked list using insertion sort. 二重循环 *///// InsertionSortList.c// Algorithms//// Created by TTc on 15/6/22.// Copyright (c) 2015年 TTc. All rights reserved.原创 2015-06-22 19:18:22 · 619 阅读 · 0 评论 -
C实现 LeetCode->Linked List Cycle 双指针大法)(单链表是否有环 并计算环长度)
1.如何判断是否有环?如果有两个头结点指针,一个走的快,一个走的慢,那么若干步以后,快的指针总会超过慢的指针一圈。2.如何计算环的长度?第一次相遇(超一圈)时开始计数,第二次相遇时停止计数。3.如何判断环的入口点:碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始走,相遇的那个点就是连接点。//// LinkedListCycleII.原创 2015-06-22 17:32:47 · 699 阅读 · 0 评论 -
C实现 LeetCode->Partition List(双指针大法)(单链表)
/** * Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in原创 2015-06-22 20:24:11 · 471 阅读 · 0 评论 -
C实现 LeetCode->Reorder List (双指针大法)(单链表是否有环)
/** * Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do this in-place without altering the nodes' values. For example, Given {1,2,3,原创 2015-06-22 18:30:55 · 559 阅读 · 0 评论 -
C实现 LeetCode->Linked List Cycle 双指针大法)(单链表是否有环)
Given a linked list, determine if it has a cycle in it.Follow up:Can you solve it without using extra space?//判断一个链表是否为循环链表; 双指针大法(一快一慢)//// LinkedListCycle.c// Algo原创 2015-06-22 17:26:23 · 611 阅读 · 0 评论 -
C实现 LeetCode->Reverse Integer
Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321反转整形主要是注意边界条件1: 如果整数的最后一位为0,应该输出什么?例如,如100。 2: 逆转整数可能溢出;假设输入是一个32位整数原创 2015-06-11 10:21:41 · 410 阅读 · 0 评论 -
C实现 LeetCode->Integer to Roman
Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.将一个 整形转换为 罗马字符 int范围(1-3999)//// IntegerToRoman.c// Algorit原创 2015-06-11 11:26:45 · 484 阅读 · 0 评论 -
List单链表实现
//// List.h// Algorithms&Data_structures//// Created by TTc on 15-2-2.// Copyright (c) 2015年 TTc. All rights reserved.///* defined(__Algorithms_Data_structures__List__) */#ifndef __Algorithm原创 2016-05-25 16:27:45 · 2951 阅读 · 0 评论 -
DList双向链表
//// DList.h// Algorithms&Data_structures//// Created by TTc on 15-2-2.// Copyright (c) 2015年 TTc. All rights reserved.//#ifndef __Algorithms_Data_structures__DList__#define __Algorithms_原创 2016-05-25 16:35:09 · 6575 阅读 · 0 评论 -
Clist循环链表的实现
//// Clist.h// Algorithms&Data_structures//// Created by TTc on 15-2-2.// Copyright (c) 2015年 TTc. All rights reserved.///** * 循环链表 */#ifndef __Algorithms_Data_structures__Clist__#defin原创 2016-05-25 16:45:24 · 887 阅读 · 0 评论 -
Stack栈 链式存储 实现
//// Stack.h// Algorithms&Data_structures//// Created by TTc on 15-2-2.// Copyright (c) 2015年 TTc. All rights reserved.//#ifndef __Algorithms_Data_structures__Stack__#define __Algorithms_Dat原创 2016-05-25 16:50:55 · 461 阅读 · 0 评论 -
Queue队列 链式存储实现
//// Queue.h// Algorithms&Data_structures//// Created by TTc on 15-2-2.// Copyright (c) 2015年 TTc. All rights reserved.//#ifndef __Algorithms_Data_structures__Queue__#define __Algorithms_Dat原创 2016-05-25 16:56:00 · 424 阅读 · 0 评论 -
SqQueue循环队列的 顺序存储实现
//---循环队列----队列的顺序存储结构-----#define MAX_QSIZE 100 // z最大队列长度typedef int ElemType;typedef struct { ElemType *base; int front; //头指针,若队列不空则指向队列头元素 int rear; //尾指针,若队列不空,指向队列尾元素的下一个元素}原创 2016-05-25 16:57:43 · 3302 阅读 · 0 评论 -
《算法导论》
待总结原创 2015-01-05 14:33:44 · 793 阅读 · 0 评论 -
C 算法精介----哈希表->链式哈希表->分析与实现
经典的字符串哈希函数 /*hashpjw.c*/ unsigned int hashpjw(const void *key) { const char *ptr; unsigned int val; val = 0; ptr = key; while (*ptr != '\0'){ unsig原创 2015-02-03 10:26:12 · 2614 阅读 · 0 评论 -
C实现 LeetCode->4Sum
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note:Element原创 2015-06-15 11:19:58 · 369 阅读 · 0 评论 -
C实现 LeetCode->3SumClosest
Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exact原创 2015-06-15 10:10:32 · 555 阅读 · 0 评论 -
C实现 LeetCode->LongestCommonPrefix
Write a function to find the longest common prefix string amongst an array of strings.Show Tag编写一个函数查找最长公共前缀字符串在字符串数组。原创 2015-06-12 10:34:48 · 514 阅读 · 0 评论 -
C实现 LeetCode->3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.1:给定一个 整形数组S 里面的元素 满足 a+b+C =0 ;2:满足a原创 2015-06-12 11:19:09 · 556 阅读 · 0 评论 -
C 算法精介----链表->循环链表
前面对单链表和双链表的定义和抽象数据类型进行简单的介绍。下面介绍另外一种链表,循环链表。他提供了一种更灵活的遍历链表元素的能力,循环链表可以是单向的也可以是双向的。区分链表是循环链表的主要看他最后一个元素的next指针是不是指向的头元素。下面是以单向链表来介绍。原创 2015-02-02 16:29:26 · 444 阅读 · 0 评论 -
C实现 LeetCode->Merge Two Sorted Lists (双指针大法)(单链表swap合并反转)
Given a linked list, swap every two adjacent nodes and return its head.For example,Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. Y原创 2015-06-19 11:36:07 · 527 阅读 · 0 评论 -
C实现 LeetCode->Reverse Linked List (双指针大法)(单链表反转)
Reverse a singly linked list./** * Reverse a singly linked list 反转单链表,请牢记 Reverse()函数 *///// ReverseLinkedList.c// Algorithms//// Created by TTc on 15/6/22.// Copyr原创 2015-06-22 15:04:25 · 1275 阅读 · 0 评论 -
C 算法精介----哈希表->开地址哈希表->分析与实现
在链式哈希表中,元素存在在每个地址的桶中。而开地址哈希表,元素存放在表本身中。因为注定不能和链式哈希表一样解决冲突。在开地址哈希表中解决冲突的方式就是探查这个表,直到找个放这个元素的槽,或者找到这个元素。当然如果遍历完整个表也没有找到这个元素,说明元素没有在表中。 检索哈希表的效率主要有2个因素有关:哈希表的负载因子(元素的总个数处于桶的个数)和 元素均匀分布的程度。线性探查 线性原创 2015-02-03 10:47:27 · 834 阅读 · 0 评论 -
C 算法精介----二叉树-->分析与实现
//// BiTree.h// Algorithms&Data_structures//// Created by TTc on 15-2-3.// Copyright (c) 2015年 TTc. All rights reserved.//#ifndef __Algorithms_Data_structures__BiTree__#define __Algorithm原创 2015-02-04 13:21:38 · 465 阅读 · 0 评论 -
C算法精解---树的基础知识
数据结构中为了存储和查找的方便,用各种树结构来存储文件。树的应用相当广泛,在数据库系统、用户界面、表达式处理、人工智能、时间调度、优先级队列、赫夫曼编码等都有应用。下面就和大家一起来学习树。首先了解下树的一些概念、性质、二叉树的遍历及树分类。先看下面的导图吧:遍历二叉树 上面的导图对遍历二叉树的方法进行了划分。二叉树的先序、中序及后序遍历的算法一般是由递归来实现的。我原创 2015-02-03 15:08:06 · 468 阅读 · 0 评论 -
C 算法精介----二叉搜索树-->AVL树->分析与实现
//// Bistree.h// Algorithms&Data_structures//// Created by TTc on 15-2-4.// Copyright (c) 2015年 TTc. All rights reserved.//#ifndef __Algorithms_Data_structures__Bistree__#define __Algorit原创 2015-02-04 18:02:00 · 374 阅读 · 0 评论 -
C 算法精介----链表->双向链表
双向链表双向链表,如同名字所暗示的那样,链表元素之间由2个指针链接,双向链表中的每一个元素都有3部分组成:除了数据成员和指针next外,新增加了一个指针prev,指向其前驱元素的指针。下图清晰绘出双向链表的结构://// DList.c// Algorithms&Data_structures//// Created by TTc on原创 2015-02-02 14:31:26 · 577 阅读 · 0 评论 -
C算法精解 ->集合->实现和分析
前面已经介绍了链表、栈和队列的实现,也了解到在栈和队列的实现过程中,都用到的单链表的函数接口。下面介绍新的:集合。 集合是不同对象的无序的聚集,集合的2个重要特点就是无序、和无重复性。在高中已经了解集合的很多知识,下面来回忆下,集合的特性。 集合的定义和实现,同样也是用了单链表的函数接口,只要认真阅读,肯定能理解//// Set.h//原创 2015-02-02 19:27:33 · 456 阅读 · 0 评论 -
C 算法精介----栈->链式栈
通常来说,决定采用何种方式来检索数据是非常重要的,这样便于以后对数据检索时,数据会按照何种的方式顺序输出。栈是用于检索数据的一种常用方式。栈的一种显著的特征就是它按照后进先出(LIFO)的方式存储和删除数据元素。这就是说,最后一个存入栈中的元素将会被第一个删除。我们可以看下图的表示;栈的实现方法有2种,一种是顺序栈,一种是链式栈;链式栈的定义和实现:原创 2015-02-02 17:46:37 · 436 阅读 · 0 评论 -
C 算法精介----集合Set->使用场景剖析
集合覆盖问题(Set Covering Problem,简称SCP)是运筹学研究中典型的组合优化问题之一,工业领域里的许多实际问题都可建模为集合覆盖问题,如资源选择问题、设施选址问题(移动基站的选址、物流中心的选址)等。问题: 给定一个集合S,集合P是由集合S的子集A1到An组成,集合C由集合P中的一个或者多个自己组成。如果S中的每个成员都包含在C的至少一个自己中车成为集合C覆盖S。此外,C包原创 2015-02-02 20:35:41 · 749 阅读 · 0 评论 -
C 算法精介----集合Set->总结(问与答)
原创 2015-02-02 20:39:26 · 448 阅读 · 0 评论 -
C 算法精介----栈与队列->总结(问与答)
原创 2015-02-02 19:20:21 · 372 阅读 · 0 评论