码莎拉蒂 .
这个作者很懒,什么都没留下…
展开
-
Leetcode之打印链接的倒数第K个节点
1 问题打印链表倒数第K个节点值。2 代码实现#include<stdio.h>//定义一个Node结构体,里面包含了value值和保存了下一个Node的指针(地址)typedef struct Node { int value; Node *next;} Node;//打印链表所有的值,循环遍历一次,因为链表节点的最后一个节点肯定是空,所以循环条件是node==NULL就终止循环void pri...原创 2021-02-21 18:16:55 · 2418 阅读 · 99 评论 -
Leetcode之仅仅反转字母
1 题目给定一个字符串S,返回“反转后的”字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:"ab-cd"输出:"dc-ba"示例 2:输入:"a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:"Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rev...原创 2021-01-24 18:39:51 · 2416 阅读 · 108 评论 -
不用变量交换2个值
题目:不使用变量交换2个值代码如下:#include using namespace std;int main(){ int a = 3; int b = 4; cout<<"a="<<a<<endl; cout<<"b="<<b<<endl; a = a ^ b; b = a ^ b; a = a ^ b; cout<<"a="<<a<<endl; c原创 2016-09-22 20:43:29 · 2255 阅读 · 0 评论 -
删除字符串中出现次数最少的字符
题目描述:实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。题目类别: 字符串难度: 中级运行时间限制: 10Sec内存限制: 128MByte阶段: 入职前练习输入:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。输出:原创 2016-08-25 19:55:49 · 2341 阅读 · 0 评论 -
递归函数里面又有2个调用自身的递归函数里面参数变化总结
递归函数里面又有2个调用自身的递归函数里面参数变化总结我们经常看见public void f(int i){ //逻辑代码 f(i+1) f(i+1);}public void f(Queue queue){ //逻辑代码 f(queue); f(queue);}原创 2016-08-12 23:52:48 · 12140 阅读 · 0 评论 -
周期串问题(一)
题目:题目一[周期串问题]如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3)代码如下:#include #include using namespace std;int GetMinPeriod(char *inputstring){原创 2016-08-09 23:43:55 · 2729 阅读 · 0 评论 -
周期串问题(二)
题目:题目一[周期串问题]如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3)代码如下:#include#includeusing namespace std;int GetMinPeriod(char* string) { if (s原创 2016-08-10 23:21:52 · 2188 阅读 · 0 评论 -
简单密码破解
描述:密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。他是这原创 2016-08-19 20:15:04 · 3213 阅读 · 0 评论 -
分解字符串
题目按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”代码#include#include#includeusing namespace std;vector showAll(vector原创 2016-08-18 21:14:34 · 2647 阅读 · 0 评论 -
大数求和
描述:给定两个非常大的正整数A和B,位数在50至100之间。求C=A+B;题目类别: 字符串难度: 中级运行时间限制: 10Sec内存限制: 128MByte输入:因为A和B很大,从高位到低位,以字符串的形式输入两行数字A和B。A和B的位数在50至100之间。输出:以字符串形式,输出一行,表示A和B的和。样例输入:原创 2016-08-18 16:16:47 · 2226 阅读 · 0 评论 -
汽水瓶
题目描述:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水原创 2016-08-26 09:47:14 · 2283 阅读 · 0 评论 -
坐标移动
题目开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。输入:合法坐标为A(或者D或者W或者S) + 数字(两位以内)坐标之间以;分隔。非法坐标点需要进行丢弃。如AA10; A1A;; YAD; 等。下面是一个简单的例子原创 2016-08-26 21:24:07 · 2579 阅读 · 0 评论 -
Fisher–Yates shuffle 算法
简单来说 Fisher–Yates shuffle 算法是一个用来将一个有限集合生成一个随机排列的算法(数组随机排序)。这个算法生成的随机排列是等概率的。同时这个算法非常高效。Fisher–Yates shuffle 的原始版本,最初描述在 1938 年的 Ronald Fisher(上图) 和 Frank Yates 写的书中,书名为《Statistical tables for b原创 2016-10-25 10:09:27 · 4835 阅读 · 2 评论 -
求字符串里面数字之和
无意看到别人面试问了很简单的问题,求字符串里面数字之和,所以自己来实现下。例子:比如字符串:aaaa13sseui9ddu78ff4sss里面的字符串数字是13、9、78、4 得到的和为104代码如下:package com.sangfor.tree;public class SumByString { public static int sumByString1(S原创 2016-09-30 12:01:22 · 4518 阅读 · 0 评论 -
八皇后问题(一)
问题描述:要在8*8的国际象棋棋盘中放8个皇后,使任意两个皇后都不能互相吃掉。规则是皇后能吃掉同一行、同一列、同一对角线的棋子。如下图即是两种方案:思路:比如我们搞个数组,数组的下表表示多少行,然后数值表示多少列,比如a[4] = 5,意思就代表第四行,第五列首先看不再同一行、同一列、同一对问题,我们数组依次增大,所以不会同行,至于同列,我们可以推出a[i] = a[j原创 2017-01-04 21:45:42 · 2231 阅读 · 0 评论 -
均分纸牌(经典贪心)
1 题目描述有N堆纸牌,编号分别为1,2,…,N。每堆上有若干张,但纸牌总数必为N的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为1堆上取的纸牌,只能移到编号为2的堆上;在编号为N的堆上取的纸牌,只能移到编号为N−1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。例如N=4,4堆纸牌数分别...原创 2018-12-17 00:44:01 · 2059 阅读 · 0 评论 -
八皇后问题(二)
1、八皇后问题(二)思路:我们采取回溯的方法来解决,还是那样表示,比如数组a, a[1] = 8;表示这个放在第一行第八列2、代码实现:#include#include/* *采用回溯的方法实现 * */void second_queen(){ int a[512] = {0}; int i = 1, n; printf("请输入几皇宫问题"原创 2017-01-05 15:53:37 · 2031 阅读 · 0 评论 -
八皇后问题(三)
八皇后问题(三) 思路:用递归实现,既然是深度优先搜索,采用回溯思想,一般都可以用递归来实现。代码:#include#includeint a[512] = {0};int n;int sum;int check_queen(int a[], int n){ for (int i = 1; i < n; i++) if (fabs(n原创 2017-01-05 17:32:37 · 2068 阅读 · 0 评论 -
用递归实现字符数组的反转
用递归实现字符数组的反转比如 char a[10] = {''a', 'b', 'c'};用递归实现后打印为 ‘c’, 'b', 'a'代码实现:#include#includevoid reverse(int length, char a[]);int main(){ char a[10] = {'a', 'b', 'c', 'd', 'e'}; int原创 2016-12-30 14:28:59 · 4715 阅读 · 0 评论 -
给定0~N之间的N个数字(大于等于0,小于N,不重复)进行按小到大排列(不用其它的经典排序算法)
1 问题比如我们给定0~N之间的N个数字(大于等于0,小于N,并且不重复)进行按小到大排列,比如N是5,我们给定数据{3, 2, 1, 0, 4},我们按照从小到大的排名最后就是{0, 1, 2, 3, 4}2 思路我们遍历数组,下标为i,我们把i和a[i]进行对比,如果不想等我们就进行交换a[i]和a[a[i]]的值,我们知道题目要求是0~N,所以a[a...原创 2018-12-20 22:29:08 · 2751 阅读 · 0 评论 -
贪心算法之最小堆实现霍夫曼编码
贪心算法之最小堆实现霍夫曼编码实现之前需要学习的地方:如果你不了解堆、堆的插入、堆的删除,可以先看下我前面几篇博客http://blog.csdn.net/u011068702/article/details/52712634最详细的最小堆构建、插入、删除的过程图解http://blog.csdn.net/u011068702/article/details/52767187原创 2016-10-11 22:22:29 · 8770 阅读 · 0 评论 -
贪心算法
贪心算法一、定义什么是贪心算法呢?所谓贪心算法是指,在对问题求解时,总是做出在当前看来最好的选择。也就是说,不从整体最优解出发来考虑,它所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题都能产生整体最优解或整体最优解的近似解。贪心算法的基本思路如下:1.建立数学模型来描述问题。2.把求解的问题分成若干个子问题。原创 2016-09-27 23:11:08 · 2329 阅读 · 0 评论 -
求字符串里里面字符出现的次数和出现哪些不同的字符的字符串
题目:字符串里里面字符出现的次数和出现哪些不同的字符such as 字符串“aaaabbbccd” 出现a4次,b3次,c2次,d1次,出现的不同字符的字符串为“abcd”代码:#include #include #include void getJustOnce(char* inputArray, char* outputArray, int leng原创 2016-10-12 11:40:56 · 2370 阅读 · 0 评论 -
经典的01背包问题
01背包问题具体例子:假设现有容量10kg的背包,另外有3个物品,分别为a1,a2,a3。物品a1重量为3kg,价值为4;物品a2重量为4kg,价值为5;物品a3重量为5kg,价值为6。将哪些物品放入背包可使得背包中的总价值最大? 这个问题有两种解法,动态规划和贪婪算法。本文仅涉及动态规划。 先不套用动态规划的具体定义,试着想,碰见这种题目,怎么解决? 首先想原创 2016-09-27 18:01:45 · 3417 阅读 · 0 评论 -
除掉字符串里面相同的字符
题目:除掉字符串里面相同的字符such as 字符串“aaaabbbccdd” 出去相同的字符就会变成“abcd”代码:#include #include #include void grepString1(char a[]) { int length = strlen(a); int i = 0, j = 0; for (i=0; i < length;原创 2016-10-12 19:23:31 · 2287 阅读 · 0 评论 -
愚人节的礼物-栈
题目:四月一日快到了,Vayko想了个愚人的好办法――送礼物。嘿嘿,不要想的太好,这礼物可没那么简单,Vayko为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物。盒子里面可以再放零个或者多个盒子。假设放礼物的盒子里不再放其他盒子。用()表示一个盒子,B表示礼物,Vayko想让你帮她算出愚人指数,即最少需要拆多少个盒子才能拿到礼物。 输入:本题目包含多组测试,请处原创 2016-10-13 12:54:36 · 2392 阅读 · 0 评论 -
栈和队列之生成窗口最大值数组
package com.chenyu.zuo.stackAndQueue;import java.util.LinkedList;/** * 题目:有一个整形数组,arr和一个大小为w的窗口从数组的最左边滑到最右边,窗口每次向右滑动一个位置。 * 例如数组[4,3,5,4,3,3,6,7],窗口的大小为3时; * [4 3 5] 4 3 3 6 7 窗口中最大值为5 * 4原创 2015-12-08 23:51:47 · 1655 阅读 · 0 评论 -
用C语言实现数组反序
题目:比如输入:数组是1,2,3,4,5反序后的结果是:5,4,3,2,1实现代码如下#include //用数组反序数组void reserve1(int a[],int n){ int m=(n+1)/2; int i=0; for(i;i<m;i++){ int j=n-1-i; int temp=a[i]; a[i]=a[j];原创 2016-01-20 16:06:48 · 11087 阅读 · 0 评论 -
求数组里面的最大值和最小值
题目:求数组里面的最大值和最小值比如:数组 1,2,3,4,5最大值是5,最小值是1代码实现:#include int max,min;void getMaxAndMin(int a[],int n){ int *q; q=a; max=min=*a; for(q;q<a+n;q++){ if(*q>max){ max=原创 2016-01-20 17:00:23 · 3196 阅读 · 0 评论 -
C语言之反序数组和求最大值和最小值
原创 2016-01-18 22:35:54 · 1823 阅读 · 0 评论 -
求两个数的最小公约数和最小公倍数
题目:求两个数的最小公约数和最小公倍数思路:求最大公约数: 欧几里得在其《几何原本》中提出的欧几里得算法,有称辗转相除法,具体做法是如果q和r分别是m除以n的商及玉树,m=nq+r,那么m和n的最大公约数等于n和r的最大公约数求最小公倍数:最小公倍数等于a*b/他们的最大公约数代码实现:package com.chenyu.zuo.other原创 2015-12-14 00:58:43 · 2196 阅读 · 0 评论 -
LeetCode之Add Two Numbers
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 tw原创 2015-11-02 22:54:58 · 1742 阅读 · 0 评论 -
leetcode之Two Sum
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2)原创 2015-10-29 16:53:39 · 1907 阅读 · 0 评论 -
蚂蚁算法
public class 蚂蚁算法 {/*** 有n个蚂蚁每秒速度在Lcm的杆子上爬行,蚂蚁到杆子端点就会掉下去,蚂蚁相遇,交错通过,只能各自反方向爬回去,* 对于每只蚂蚁我们知道它离杆子左端的距离是Xi,但是不知道它当时的朝向,请计算所有蚂蚁落下杆子所需要的最短时间和* 最长时间* @param args*/ public static void main(String[]原创 2015-10-20 22:15:42 · 3976 阅读 · 0 评论 -
在n个火柴里面拿3根出来拼接成最大三角形的周长
求三角形max周长public class 求三角形max周长 {public static void main(String[] args) { /** * 有n个棍子 每个棍子的长度是a[i] * 3<=n<=100; * 1<=a[i]<=100; */System.out.println("请输入原创 2015-10-20 22:10:41 · 2252 阅读 · 0 评论 -
二分查找找下标或者值
public class Util {//求最大值 public static int maxValue(int a,int b){ int max=0; if(a>b){ max=a; }else{ max=b; } return max; } //求最小值 public static int mi原创 2015-10-20 22:04:48 · 2191 阅读 · 0 评论 -
判断一个字符串是否包含另一个字符串(用java但是不能用index()这个函数)
目录:一.方法介绍二.图示意三.源代码一.方法介绍判断一个字符串str1是否包含另一个字符串str2:1.取str2的第一个字符一次和str1的字符依次比较,知道找到相等的字符为止或者找完整个str1的length.2.当找到相等的字符后,在str2长度内str2与str1依次进行比较二.图示意三.源代码JDK中jav原创 2015-10-15 00:23:17 · 3723 阅读 · 0 评论 -
用java写的常见排序
/*** @author Think*折半插入排序*/public class binInsertSort {private static int a[]={22,3,43,11,99,88,34,34,33,22,11,1}; public static void main(String[] args) { int []b=binInsertSo原创 2015-08-19 11:39:54 · 1378 阅读 · 0 评论 -
挑战程序设计竞赛部分题目选择排序、二分查找找出下标、深度优先算法、求三角形max周长、蚂蚁算法、操作excel
首先提供帮助类 可能这个类还需要更新public class Util {//求最大值 public static int maxValue(int a,int b){ int max=0; if(a>b){ max=a; }else{ max=b; } return max; }原创 2015-08-19 13:03:58 · 1528 阅读 · 2 评论 -
LRU算法
1 LRU算法LRU(Least recently used,最近最少使用)根据数据的历史访问记录来进行淘汰数据,思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。2 具体实现过程新数据插入到链表头部; 每当缓存命中(即缓存数据被访问),则将数据移到链表头部; 当链表满的时候,将链表尾部的数据丢弃。3 基于Linke...原创 2019-12-23 01:11:33 · 2506 阅读 · 0 评论