array

LIS问题:二分+DP

旧城冷巷雨未停 提交于 2020-02-09 16:28:05
实现代码: int Longest_increasing_subseq(vector<int> &array){ vector<int> dp(array.size()); dp[0]=-1; int left,right,mid; int count=0; for(int i=0;i<array.size();++i){ left=0; right=count; while(left<=right){ mid = (left+right)/2; if(array[i]<dp[mid]){ right=mid-1; }else if(array[i]>dp[mid]){ left=mid+1; }else{ cout << "case Error happened!\n"; } } if(dp[left]==0){ dp[left]=array[i]; ++count; } else{ dp[left]=min(dp[left],array[i]); } } return count; } 应用于解决问题:https://app.codility.com/programmers/lessons/90-tasks_from_indeed_prime_2015_challenge/slalom_skiing/ SlalomSkiing: int solution(vector<int>

[数据结构与算法 03] 最好、最坏、平均、均摊 时间复杂度

荒凉一梦 提交于 2020-02-09 01:29:34
由来 /**** 在一个无序的数组(array)中 查找变量 x 第一次出现的位置。如果没有找到,就返回 -1 ****/ // n 表示数组array的长度 int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; } return pos; } 分析出此函数的时间复杂度为 O(n) 在数组中查找一个数据,并不需要每次都把整个数组都遍历一遍, 因为有可能中途找到就可以提前结束循环了。 所以我们可以这样优化一下这段查找代码 /**** 在一个无序的数组(array)中 查找变量 x 第一次出现的位置。如果没有找到,就返回 -1 ****/ // n 表示数组array的长度 int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) { pos = i; break; // 已经找到了,就不必继续找了 } } return pos; } 那么问题来了,如此优化以后,时间复杂度还是 O(n) 吗??? 可能第一次就找到了,只循环了一次,那时间复杂度就是 O(1)

C++ Overload []

☆樱花仙子☆ 提交于 2020-02-08 23:07:42
C++ Overload [] 前言 Overload [] return by reference TensorRT中的例子 參考連結 前言 本篇基於 Overloading Subscript or array index operator [] in C++ ,並加上TensorRT中的例子做為參考。 Overload [] 以下例子定義了一個類別 Array ,並對 [] 這個運算子做overload,使它在進行索引前會先做檢查。 class Array { private : int * ptr ; int size ; public : Array ( int * p = NULL , int s = 0 ) ; // Overloading [] operator to access elements in array style int & operator [ ] ( int ) ; // Utility function to print contents void print ( ) const ; } ; // constructor for array class Array :: Array ( int * p , int s ) { size = s ; ptr = nullptr ; if ( s != 0 ) { ptr = new int [ s

NumPy存取与函数

给你一囗甜甜゛ 提交于 2020-02-08 22:34:57
NumPy存取与函数 import numpy as np numpy存取csv文件函数 a = np.arange(100).reshape(5, 20) np.savetxt('a.csv', a, fmt='%d', delimiter=',') 参数fmt表示的是存入的数据类型,参数delimiter表示的是分隔符 b = np.loadtxt('a.csv', delimiter=',') b array([[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 18., 19.], [20., 21., 22., 23., 24., 25., 26., 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38., 39.], [40., 41., 42., 43., 44., 45., 46., 47., 48., 49., 50., 51., 52., 53., 54., 55., 56., 57., 58., 59.], [60., 61., 62., 63., 64., 65., 66., 67., 68., 69., 70., 71., 72., 73., 74., 75., 76., 77.,

spark RDD基础装换操作--zip操作

杀马特。学长 韩版系。学妹 提交于 2020-02-08 10:13:59
14.zip操作 将数字1~3组成的RDD,与字母A到C组成的RDD应用拉链(zip)操作,合并到一个新的RDD中。 scala> val rddData1 = sc.parallelize(1 to 10,5) rddData1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[32] at parallelize at <console>:24 scala> val rddData2 = rddData1.glom rddData2: org.apache.spark.rdd.RDD[Array[Int]] = MapPartitionsRDD[33] at glom at <console>:26 scala> rddData2.collect res13: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4), Array(5, 6), Array(7, 8), Array(9, 10)) scala> val rddData1 = sc.parallelize(1 to 3, 2) rddData1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[34] at parallelize at

JAVA CCF-201703-2 学生排队

浪子不回头ぞ 提交于 2020-02-08 04:33:24
欢迎访问我的 CCF认证解题目录 题目描述 思路过程 出队入队可以使用内置的List进行模拟操作 代码 import java . util . LinkedList ; import java . util . List ; import java . util . Scanner ; public class Main { public static void main ( String [ ] args ) { Scanner in = new Scanner ( System . in ) ; int n = in . nextInt ( ) , m = in . nextInt ( ) ; List < Integer > array = new LinkedList < > ( ) ; //下标是位置,值是编号 for ( int i = 1 ; i <= n ; i ++ ) array . add ( i ) ; for ( int i = 0 ; i < m ; i ++ ) { int num = in . nextInt ( ) , move = in . nextInt ( ) ; int index = array . indexOf ( num ) ; //找到学生的位置 array . remove ( index ) ; //出队 array .

ci 加载mymodel

☆樱花仙子☆ 提交于 2020-02-08 02:41:55
<?php /** * A base model with a series of CRUD functions (powered by CI's query builder), * validation-in-model support, event callbacks and more. * * @link http://github.com/jamierumbelow/codeigniter-base-model * @copyright Copyright (c) 2012, Jamie Rumbelow <http://jamierumbelow.net> */ class MY_Model extends CI_Model { /* -------------------------------------------------------------- * VARIABLES * ------------------------------------------------------------ */ /** * This model's default database table. Automatically * guessed by pluralising the model name. */ protected $_table; /** *

《剑指Offer》53. 数字在排序数组中出现的次数

霸气de小男生 提交于 2020-02-07 23:34:23
题目链接 牛客网 题目描述 统计一个数字在排序数组中出现的次数。 Input: nums = 1, 2, 3, 3, 3, 3, 4, 6 K = 3 Output: 4 解题思路 排序数组记住二分查找 public class Solution { public int GetNumberOfK ( int [ ] array , int k ) { if ( array == null || array . length == 0 ) return 0 ; int first = binarySearch ( array , k ) ; int last = binarySearch ( array , k + 1 ) ; if ( first == array . length || array [ first ] != k ) return 0 ; else return last - first ; } // 找到>=target的元素最先出现的位置 private int binarySearch ( int [ ] array , int target ) { int l = 0 , h = array . length ; // 注意这里h取到array.length,可以减少一次对last的判断 while ( l < h ) { int m = l + ( h

LeetCode——Convert Sorted Array to Binary Search Tree

北慕城南 提交于 2020-02-07 08:28:05
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 原题链接:https://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题目:给定一个升序排列元素的数组,将其转换成高度平衡的二叉树。 思路:已经排序。则从中间劈开,中间元素为树的根,左右递归构建。 public TreeNode sortedArrayToBST(int[] num) { return sortedArrayToBST(num,0,num.length - 1); } public TreeNode sortedArrayToBST(int[] num,int start,int end) { if(start > end) return null; int mid = (start + end)/2; TreeNode node = new TreeNode(num[mid]); node.left = sortedArrayToBST(num,start,mid-1); node.right = sortedArrayToBST(num,mid+1,end); return

js数组

一曲冷凌霜 提交于 2020-02-07 05:07:17
数组 数组是一个引用列表(顺序,只有值,紧密,速度慢) 数组的创建 var array=[]; //创建空数组 var array=new Array(); //构造函数创建法 var arr=Array(); //不是创建方法,只是把字符串转化为数组类型,速度慢点儿 var arr=new Object([]); //对象数组,不建议使用,反正也还没用过 构造函数创建 构造函数实例化对象 var arr=new Array(1,2,3,4,5); console.log(arr); 数组通过构造函数创建时,如果只有一个参数,并且参数是正整数,这个数就是数组的长度,而不作为数组的新元素; 如果是数字,但不是正整数,都会报错; 如果不是数字,则作为数组的第一个元素添加。 var arr=new Array(“3”); console.log(arr); //[“3”] var arr=new Array(9); console.log(arr); //(9) [empty × 9] 字符串转数组类型 var arr=Array(1,2,3,4,5,6); console.log(arr); var arr=Array(5); console.log(arr); //(5) [empty × 5] 数组的结构 字面量创建数组 var arr0 = [1,2,3,4,5];两个",