
编程积累
记录一些编程题目,增强编程思维
井井帆
practice makes perfect
展开
-
回文串(最长前缀/最长子串)
#include "stdafx.h"#include <iostream>using namespace std;//求最长前缀回文串int palindromical(string s){ if (s.size() == 0) return 0; int fc = s[0]; int i = 0; int maxlen = 1; wh原创 2017-08-15 17:33:00 · 439 阅读 · 0 评论 -
c++中的堆存储和栈存储
首先,我们举一个例子:void f() { int* p=new int[5]; } 看到new,我们首先就应该想到,我们分配了一块堆内存,那么指针p呢?他分配的是一块栈内存,所以这句话的意思就是:在栈内存中存放了一个指向一块堆内存的指针p。在程序会先确定在堆中分配内存的大小,然后调用operator new分配内存,然后返回这块内存的首地址,放入栈中在C++中,内存分成5个区,他们分原创 2017-08-08 13:17:51 · 2566 阅读 · 0 评论 -
学生和年龄输入并排序输出
1.年龄大的在前2.年龄一样名字首字母按a~z排序#include <iostream>#include <vector>#include <unordered_map>#include <algorithm>using namespace std;struct node { string t; int value;}...原创 2019-10-20 13:52:27 · 983 阅读 · 0 评论 -
k-means聚类
mean 平均值,k 聚成k类算法目的:将数据分成k类1.首先,在所有数据中随机选取中的k组数据作为k个中心点2.分别计算每组数据和k个数据的误差,距离k个中心点哪个近,就标记为哪类3.计算完每组数据后,重新计算中心点,计算方法是算出每组的平均值作为该组新的中心点4.重复2~3,直至中心点不变main.matclose all;for i=1:10 % clear work...原创 2019-11-07 19:17:44 · 295 阅读 · 0 评论 -
排序算法(C++)
原文出处:排序算法总结 #include "stdafx.h"#include <iostream>#include <time.h>using namespace std;/**1. 冒泡排序*///时间复杂度为O(N ^ 2),空间复杂度为O(1)。排序是稳定的void bubble_sort(int arr[], int len){ //每次从后往前冒一个最小值,且每次能原创 2017-08-27 08:58:06 · 220 阅读 · 0 评论 -
字符串的排列
假设字符串内无重复元素时,下述代码正确。vector<string> res;void help(string s, int n){ if (n == 0){ res.push_back(s); } for (int i = 0; i <= n; i++){ swap(s[i], s[n]); help(s, n - 1);原创 2017-08-23 12:04:24 · 176 阅读 · 0 评论 -
把数组排成最小的数
class Solution {public: static bool cmp(int a,int b){ string A=""; string B=""; A+=to_string(a); A+=to_string(b); B+=to_string(b); B+=to_string(a);原创 2017-08-24 10:48:45 · 196 阅读 · 0 评论 -
扑克牌顺子
class Solution {public: bool IsContinuous( vector<int> numbers ) { if(numbers.size()!=5){ return false; } int d[14]; int maxnum=-1,minnum=14; me原创 2017-08-24 08:59:19 · 555 阅读 · 0 评论 -
正则表达式匹配
在牛客网上做剑指offer的习题,这个题感觉有些问题 题目描述 请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配错误代码1:bool match(char原创 2017-08-14 12:53:04 · 615 阅读 · 0 评论 -
实现pow函数
class Solution {public: double Power(double base, int exponent) { double num = base,res = 1; int exp = exponent; if (exp == 0) return 1; else if (exp <0){ if (base =原创 2017-08-20 08:11:28 · 340 阅读 · 0 评论 -
和为S的两个数/TwoSum
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 和leetcode 的two sum相似,设置一对起始位置,第一找到的一对数值就是乘积最小的AC代码class Solution {public: vector<int> FindNumbersWithSum(vector<int> array,i原创 2017-08-12 17:39:03 · 206 阅读 · 0 评论 -
顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。分析:和spiral matrix类似(leetcode spiral matrix )。假设矩阵为方阵(行列数为n),设置打印位置点M(xstart,ystart),每次都打印当前矩阵的最外围元素,从第一个元素开始: 1.向左打印,xstart不变,ystart+1,打印n-1个;2.向下打印,ystart为当前矩阵的最后一列原创 2017-08-09 16:07:28 · 250 阅读 · 0 评论 -
改进Fibonacci数列
1.递归public class Solution { public int Fibonacci(int n) { if(n<=1) return n; return Fibonacci(n-1)+Fibonacci(n-2); }}当n越大时,耗时越长,因为有大量冗余操作 举个栗子: n=4: Fi原创 2017-08-08 23:29:56 · 464 阅读 · 0 评论 -
从尾到头打印链表
没什么难度,AC代码如下:/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayL原创 2017-08-08 14:26:30 · 171 阅读 · 0 评论 -
替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。分析: 开始写的时候,重新开辟了一个StringBuffer存储空间,结果内存不够。就在原str上计算出替换后的长度记做newlen,然后从尾至头一次扫描一遍,更新原有str就好。AC代码:public class Solution {原创 2017-08-08 14:14:13 · 181 阅读 · 0 评论