sort

1329. Sort the Matrix Diagonally

为君一笑 提交于 2020-01-29 09:21:07
Given a m * n matrix mat of integers, sort it diagonally in ascending order from the top-left to the bottom-right then return the sorted array. Example 1: Input: mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]] Output: [[1,1,1,1],[1,2,2,2],[1,2,3,3]] Constraints: m == mat.length n == mat[i].length 1 <= m, n <= 100 1 <= mat[i][j] <= 100 class Solution { public int[][] diagonalSort(int[][] mat) { int m = mat.length, n = mat[0].length; Map<Integer, PriorityQueue<Integer>> map = new HashMap(); for(int i = 0; i < m; i++){ for(int j = 0; j < n; j++){ map.putIfAbsent(i-j, new PriorityQueue()); map.get(i - j)

模块三、企业实战案例

二次信任 提交于 2020-01-29 01:17:39
十四、企业实战案例 (一)使用for循环在/oldboy目录下批量创建10个html文件,其中文件名包含10个随机小写字母加固定字符串0ldoby。 思路分析,产生随机数字方法: ①核心是创建10个随机小写字母。 echo $RANDOM 范围是0-32767 openssl rand -base64 100 date +%s%N head /dev/urandom/cksum uuidgen cat /proc/sys/kernel/random/uuid mkpasswd (yum install expect -y) -l:长度 -d:数字 -c:小写字母 -C:大写字母 -s:特殊字符 [root@centos6-kvm3 shili]# cat 14-01.sh #!/bin/bash path="oldboy" [ -d /path ] || mkdir -p oldboy/ for n in {1..10} do random=`echo "OLDBOY$RANDOM" | md5sum | tr '0-9' 'm-z' | cut -c 2-11` touch $path/${random}_oldboy.html done [root@centos6-kvm3 shili]# (二) 、批量改名特殊案例。将以上面试题1中结果

MATLAB小常识3

微笑、不失礼 提交于 2020-01-28 17:38:32
14.将数据复制到工作区,并将变量命名为X 在工作区右键,新建工作变量( CTRL+N ),命名为X 将Excel中地数据 复制粘贴 进入变量 关掉变量窗口,右键X变量,另存为 .mat 文件 load 命令即可加载数据,注意代码和数据变量需放在同一目录下。 15.向量的运算 行(列)向量A与行(列)向量B对应元素的加减------> A+B / A-B ; 行(列)向量A与行(列)向量B对应元素的乘除------> A.*B / A./B ; 行(列)向量A的最大/最小值-------> max(A) / min(A) ; 行(列)向量A的每个元素与常数n加减乘除-----> A+n / A-n / A*n / A/n ; 16.abs函数   A的绝对值-----> abs(A) ; 17.zeros函数 产生n阶元素全为0的矩阵-----> zeros(n) ; 产生n行列向量-----> zeros(n,1) ; 产生n X m 阶元素全为0的矩阵------> zeros (n,m) ; 18.magic函数 产生由1至n^2构成的n阶矩阵,且每一列的和相等------> magic(n) ; 19.sort函数 对行(列)向量A进行排序-------> sort(A) ;(默认为升序,若要降序: sort(A,'descend') ) ; 对矩阵A的列向量进行排序 --

排序算法概述

落爺英雄遲暮 提交于 2020-01-28 16:46:46
基本概念 什么是排序 排序是计算机内经常进行的一种操作,将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。 什么是稳定性 定义 能保证两个相等的数,经过排序之后,其在序列的前后位置顺序不变。(A1=A2,排序前A1在A2前面,排序后A1还在A2前面)。 意义 稳定性本质是维持具有相同属性的数据的插入顺序 ,如果后面需要使用该插入顺序排序,则稳定性排序可以避免这次排序。 排序分类 内部排序和外部排序 按照是否要访问外存,排序可以分为内部排序和外部排序。 内部排序(In-place) 若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。 外部排序(Out-place) 若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。 稳定排序和不稳定排序 按照稳定性,排序可以分为稳定排序和不稳定排序。 稳定排序 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的。 不稳定排序 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序可能会发生变化,即在原序列中,r[i]=r[j],且r[i]在r[j]之前

LCS,LIS,LICS算法

会有一股神秘感。 提交于 2020-01-28 16:14:03
LCS,LIS,LICS算法 首先,要理解下子串子序列的含义: 子串:来源于原序列连续的一段。 子序列:来源于原序列中元素相对顺序不变的一段,不要求元素连续。 LCS(最长公共子序列) 给定两个序列A、B,设C[i, j]=LCS(Ai, Bj),其中Ai、Bj分别表示A从首元素到第i个元素的一段、B从首元素到第j个元素的一段, ai、bi分别表示A中第i个元素、B中第j个元素。则LCS的状态转移方程为: C[i, j] = 0. ( if i == 0 or j == 0 ) C[i, j] = C[i-1, j-1] + 1. ( if i,j > 0 and ai == bi ) C[i, j] = max(C[i-1, j], C[i, j-1]). ( if i,j > 0 and ai != bi ) 根据该递归方程可知,这是一个dp思想,实现就是构造出数组C。具体步骤如下: 先构造出第一行和第一列。 C[0, 0] ... C[0, j] ... C[0, n] ... C[i, 0] ... C[n, 0] 再依次构造出其余各行。 C[0, 0] ... C[0, j] ... C[0, n] ... ... ... ... ... C[i, 0] ... C[i, j] ... C[i, n] ... ... ... ... ... C[n, 0] ... C[n

mysql 优化 sql查询优化

落花浮王杯 提交于 2020-01-28 10:12:29
1.永远是小表驱动大表 优化原则: 2.优化order by 语句 order by子句,尽量使用Index方式排序,避免使用FileSort方式排序。尽可能在索引列上完成排序操作,遵照索引建的最佳左排序 优化策略: *增大sort_buffer_size参数设置 *增大max_length_for_sort_data参数设置 order by 关键字优化: 1.Order by 时select*是一个大忌只Query需要的字段,这点非常重要,在这里的影响是: (1)当Query的字段大小总和小于max_length_for_sort_data,而且排序字段不是TEXT|BLOB类型,会用改进后的算法-----单路排序,否则用老算法----多路排序 (2) 两种算法的数据都有可能超出sort_buffer的容量,超出之后,会创建tmp文件进行合并排序,导致多次I/O,但是用单路排序的风险会很大一些,所以要提高sort_buffer_size。 2.尝试提高sort_buffer_size **不管用哪种算法,提高这个蚕食都会提高效率,当然要根据系统的能力去提高 3.尝试提高max_length_for_sort_data 提高这个参数,会增加用改进算法的概率,但是如果设的太高,数据总容量超过sort_buffer_size的概率就增大,明显症状是高的磁盘I/O活动和低的处理器使用率

MongoDB 聚合管道(Aggregation Pipeline)

半腔热情 提交于 2020-01-28 04:29:10
转自 : https://www.cnblogs.com/shanyou/p/3494854.html 管道概念 POSIX多线程的使用方式中, 有一种很重要的方式-----流水线(亦称为“管道”)方式,“数据元素”流串行地被一组线程按顺序执行。它的使用架构可参考下图: 以面向对象的思想去理解,整个流水线,可以理解为一个数据传输的管道;该管道中的每一个工作线程,可以理解为一个整个流水线的一个工作阶段stage,这些工作线程之间的合作是一环扣一环的。靠输入口越近的工作线程,是时序较早的工作阶段stage,它的工作成果会影响下一个工作线程阶段(stage)的工作结果,即下个阶段依赖于上一个阶段的输出,上一个阶段的输出成为本阶段的输入。这也是pipeline的一个共有特点! 为了回应用户对简单数据访问的需求,MongoDB2.2版本引入新的功能 聚合框架 (Aggregation Framework) ,它是数据聚合的一个新框架,其概念类似于数据处理的管道。 每个文档通过一个由多个节点组成的管道,每个节点有自己特殊的功能(分组、过滤等),文档经过管道处理后,最后输出相应的结果。管道基本的功能有两个: 一是对文档进行“过滤”,也就是筛选出符合条件的文档; 二是对文档进行“变换”,也就是改变文档的输出形式。 其他的一些功能还包括按照某个指定的字段分组和排序等

【leetcode】1329. Sort the Matrix Diagonally

时光总嘲笑我的痴心妄想 提交于 2020-01-27 17:47:51
题目如下: Given a m * n matrix mat of integers, sort it diagonally in ascending order from the top-left to the bottom-right then return the sorted array. Example 1: Input: mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]] Output: [[1,1,1,1],[1,2,2,2],[1,2,3,3]] Constraints: m == mat.length n == mat[i].length 1 <= m, n <= 100 1 <= mat[i][j] <= 100 解题思路: 分别对每个对角线单独排序吧,简单直接。 代码如下: class Solution(object): def diagonalSort(self, mat): """ :type mat: List[List[int]] :rtype: List[List[int]] """ for i in range(len(mat[0])): arr = [] x,y = 0,i while x < len(mat) and y < len(mat[0]): arr.append(mat[x][y]) x += 1 y += 1

hive 中排序order by,sort by,distribute by使用

吃可爱长大的小学妹 提交于 2020-01-27 17:41:56
前提:hive 中使用的排序有oder by, sort by,distribute By,cluster By 具体使用如下 测试数据: 0: jdbc:hive2://hadoop-03:10000> select * from emp; +------------+------------+------------+----------+---------------+----------+-----------+-------------+--+ | emp.empno | emp.ename | emp.job | emp.mgr | emp.hiredate | emp.sal | emp.comm | emp.deptno | +------------+------------+------------+----------+---------------+----------+-----------+-------------+--+ | 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.0 | NULL | 20 | | 7499 | ALLEN | SALESMAN | 7698 | 1981-2-20 | 1600.0 | 300.0 | 30 | | 7521 | WARD | SALESMAN | 7698 |