tmp

循环单链表

假如想象 提交于 2020-02-24 08:39:09
public class Node { public Object data; public Node next; public Node(){} public Node(Object data,Node next){ this.data = data; this.next = next; } }    public class CirSingleLink { private Node node = null; private int size = 0; public void init(){ node = new Node(); node.data = null; //头结点指向头结点 node.next = node; } //从尾结点进行插入 public void add(Object i){ Node newNode = new Node(i,node); if(node.next == node){ node.next = newNode; }else{ Node tmp = node; while (tmp.next != node){ tmp =tmp.next; } tmp.next = newNode; } size ++; } public void delete(Object i){ Node tmp = node; while(tmp.next !=

[LeetCode] 189. 旋转数组

こ雲淡風輕ζ 提交于 2020-02-24 05:47:37
题目链接: https://leetcode-cn.com/problems/rotate-array/ 题目描述: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例: 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2: 输入: [-1,-100,3,99] 和 k = 2 输出: [3,99,-1,-100] 解释: 向右旋转 1 步: [99,-1,-100,3] 向右旋转 2 步: [3,99,-1,-100] 说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 要求使用空间复杂度为 O(1) 的 原地 算法。 思路: 思路一:插入 思路二:拼接 思路三:三个翻转 , 整体翻转, 前 k 翻转,后 k 翻转 思路四:模拟过程 代码: 思路一: class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ n

数据结构栈的java实现

筅森魡賤 提交于 2020-02-23 19:42:56
近来复习数据结构,自己动手实现了栈。栈是一种限制插入和删除只能在一个位置上的表。最基本的操作是进栈和出栈,因此,又被叫作“先进后出”表。 实现方式是这样的:首先定义了一个接口,然后通过这个接口实现了线性栈和链式栈,代码比较简单,如下: 1 package com.peter.java.dsa.interfaces; 2 3 /** 4 * 栈操作定义 5 * 6 * @author Peter Pan 7 */ 8 9 public interface Stack<T> { 10 /* 判空 */ 11 boolean isEmpty(); 12 13 /* 清空栈 */ 14 void clear(); 15 16 /* 弹栈 */ 17 T pop(); 18 19 /* 入栈 */ 20 boolean push(T data); 21 22 /* 栈的长度 */ 23 int length(); 24 25 /* 查看栈顶的元素,但不移除它 */ 26 T peek(); 27 28 /* 返回对象在栈中的位置 */ 29 int search(T data); 30 } View Code 线性栈:以数组的方式实现。 1 package com.peter.java.dsa.common; 2 3 import com.peter.java.dsa.interfaces

103. 二叉树的锯齿形层次遍历

情到浓时终转凉″ 提交于 2020-02-23 04:40:53
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15,7] ] /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int>>out; if(root==NULL) return out; //用队列存储节点指针 queue<TreeNode*>record; //先将根节点给队列 record.push(root); //标志位,用于判断何时将向量颠倒 bool flag=true; while(!record.empty()) { //目前队列中的数量,用n值保存

python表示矩阵

試著忘記壹切 提交于 2020-02-23 01:39:20
在c语言中,表示个“整型3行4列”的矩阵,可以这样声明:int a[3][4];在python中一不能声明变量int,二不能列出维数。可以利用列表中夹带列表形式表示。例如: 表示矩阵 ,可以这样: count = 1 a = [] for i in range(0, 3): tmp = [] for j in range(0, 3): tmp.append(count) count += 1 a.append(tmp) print a 结果:[[1, 2, 3], [4, 5, 6], [7, 8, 9]] 但是注意一点:初始化(赋值全部为0时),下面是错误的!! tmp = [] for j in range(0, 3): tmp.append(0) a = [] for i in range(0, 3): a.append(tmp) print a 结果 :[[0, 0, 0], [0, 0, 0], [0, 0, 0]] 原因 :这样的列表tmp为同一个,改变任意行,其他行都会给随着改变, 千万注意!!, 下面正确: a = [] for i in range(0, 3): tmp = [] for j in range(0, 3): tmp.append(0) a.append(tmp) print a 来源: https://www.cnblogs.com

C++学习6-变量生命周期

北慕城南 提交于 2020-02-23 01:31:30
变量生命周期 int main ( ) { Test t1 ( 10 ) ; Test t2 ; // => 不要写成 test t2() 会变成函数的声明 Test t3 ( t2 ) ; Test t4 = t3 ; //t3拷贝构造t4 // Test t5(40); Test t5 = Test ( 40 ) ; // 生成临时对象 Test(int) /* Test t5 = Test(40) 等于 Test t5(40)-- 是用临时对象 拷贝构造同类型的对象 临时对象不产生 直接构造对象即可 不是 :生成临时对象 拷贝构造t5 析构临时对象 */ cout << "-----------" << endl ; t2 = t3 ; // 赋值 t2 = Test ( 50 ) ; // 显式生成临时对象 //显式生成临时对象 这个临时对象是要产生的 然后给t2赋值 再析构临时对象 t2 = 50 ; // 隐式生成临时对象 int -> Test(int) //把其他类型转成类的类型 要看这个类有没有一个构造函数接收这个类型来生成临时对象 cout << "-----------" << endl ; return 0 ; } 介绍变量生命周期,先看看下面程序中函数对象的调用情况 原本程序: Test GetTestObject ( Test t ) { int val

P2870 后缀数组

两盒软妹~` 提交于 2020-02-22 16:45:21
题目传送门 题意: 字符串 初始是空串。 给你一个字符串 ,可以选择从串首或串尾拿走一个字符,把这个字符拼接到 的尾部。 输出最小字典序的 。 数据范围:字符串长度不超过 。 题解: 当前串首和串尾的字符不同,那么选择字典序小的那个字符就好了。 如果串首和串尾的字符相同,设串首字符是 ,串尾字符是 。 我们需要比较内层字符的大小,即比较 和 的大小。 如果还相同,那就继续向内层比较,直到找到不同的字符,如果一直相同,那选串首和选串尾是一样的。 暴力做是 。因为每次选字符时要向内层比较的次数是 。选 次那就是 。 考虑后缀数组优化。 我们把 的正序和 的倒序拼接成字符串 。 举例子: ,那么 。 模拟一遍就知道是怎么优化的了。 字符串下标从 开始,初始时 。 现在 ,然后我们比较 和 的大小关系。 其实我们就是在比较 和 的大小关系。这个后缀数组预处理后,就可以 比较了。 时间复杂度: 。 感受: 想不到用后缀数组。 并且题面的数据范围是错的。我开50W一直RE。 代码: #include<bits/stdc++.h> using namespace std ; typedef long long ll ; const int maxn = 1e6 + 5 ; int rk[maxn << 1] , sa[maxn << 1] , height[maxn << 1] ; int

P4051 后缀数组

家住魔仙堡 提交于 2020-02-22 16:07:21
题目传送门 题意: 给你一个字符串,输出加密后的字符串。 例如‘JSOI07’,可以读作: JSOI07 SOI07J OI07JS I07JSO 07JSOI 7JSOI0 把它们按照字符串的大小排序: 07JSOI 7JSOI0 I07JSO JSOI07 OI07JS SOI07J 读出最后一列字符:I0O7SJ,就是加密后的字符串。 数据范围:字符串的长度不超过 。 题解: 给一个字符串 ,我们扩大二倍,变成 。 然后考虑后缀排序,输出想要的东西。 设 。 那么当后缀长度大于 时,后面多出的部分不会影响排序。 简单分析一下: 设 ,则 。 现在有一个后缀是 。 我们想要的其实是 ,分析最后的三个字符 的影响。 观察发现 是 的前缀,那也就是说后面不想要的部分是想要的部分的前缀,那就由自身决定了,那就没影响了。 然后掏出后缀数组板子,求出sa就行了。 感受: 反复看了几遍都是5个0,结果1e5是RE,开成1e6才过去。 代码: #include<bits/stdc++.h> using namespace std ; typedef long long ll ; const int maxn = 1e6 + 5 ; int rk[maxn << 1] , sa[maxn << 1] , height[maxn << 1] ; int tmp[maxn << 1] , cnt

【转】SQL Server 中的临时表

ぃ、小莉子 提交于 2020-02-20 19:02:13
最经工作中经常要用到的 SQL query (in SQL server), 发现这个临时表在处理数据时比较方便, 优点如下: 那么什么是SQL server中的临时表,什么时候需要用到临时表?又该如何使用呢? SQL Server 中的临时表分类: 本地临时表 仅限于当前访问者访问,创建方法去如下: create table #TableName(表结构) 储存于数据库tempdb内(硬盘),当前用户断开连接,自动删除 如果使用中不断开连接,且不需要该临时表请执行:drop table #TableName 全局临时表 所有访问用户访问,创建方法去如下: create table ##TableName(表结构) 储存于数据库tempdb内,当所有访问用户断开连接,自动删除 删除语句:drop table ##TableName 2. 什么时候需要用到临时表呢? 假设一个表里面的数据有非常非常多,需要频繁的查询这个表里的相似数据 可以把相似数据放入一个临时表 3. 如何创建临时表 创建临时表 方法一: create table #临时表名(字段1 约束条件, 字段2 约束条件, .....) create table ##临时表名(字段1 约束条件, 字段2 约束条件, .....) 方法二: select * into #临时表名 from 你的表; select * into

C#数据库连接池 MySql SqlServer

浪子不回头ぞ 提交于 2020-02-18 04:11:52
查阅了一天的资料来学习MySql数据库连接池,终于在一篇博文上找到了,自己也整理了一下,希望对大家有用处 1. 建立连接池 1 using MySql.Data.MySqlClient; 2 using System; 3 using System.Collections; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Text; 7 using System.Threading.Tasks; 8 9 namespace LianJieChiTest 10 { 11 public class ConnectionPool 12 { 13 private static ConnectionPool cpool = null;//池管理对象 14 private static Object objlock = typeof(ConnectionPool);//池管理对象实例 15 private int size = 1;//池中连接数 16 private int useCount = 0;//已经使用的连接数 17 private ArrayList pool = null;//连接保存的集合 18 private String ConnectionStr = "";//连接字符串