array

2020/2/3 PHP代码审计之PHP弱类型

和自甴很熟 提交于 2020-02-03 12:24:26
0x00 简介 php中有两种比较的符号 == 与 === <?php 2 $a = $b ; 3 $a===$b ; 4 ?> === 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较 == 在进行比较的时候,会先将字符串类型转化成相同,再比较 如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行 0x01 变量类型 标准类型:布尔 boolen,整型 integer,浮点 float,字符 string 复杂类型:数组 array,对象 object 特殊类型:资源 resource 0x02 操作之间的比较 1:字符串和数字比较 2:数字和数组的比较 3:字符串和数组比较 4:“合法数字+e+合法数字”类型的字符串。 5:==和=== 0x03字符串和数字比较 <?php var_dump("admin"==0); //true var_dump("1admin"==1); //true var_dump("admin1"==1) //false var_dump("admin1"==0) //true var_dump("0e123456"=="0e4456789"); //true ?> //上述代码可自行测试 1 观察上述代码,"admin"==0 比较的时候,会将admin转化成数值,强制转化

剑指offer - 二维数组的查找

左心房为你撑大大i 提交于 2020-02-03 03:33:10
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 二分查找 解法一:暴力搜索 class Solution { public : bool Find ( int target , vector < vector < int > > array ) { int rowcount = array . size ( ) ; int colcount = array [ 0 ] . size ( ) ; if ( rowcount == 0 || colcount == 0 ) return false ; for ( int i = 0 ; i < rowcount ; i ++ ) { for ( int j = 0 ; j < colcount ; j ++ ) { if ( array [ i ] [ j ] == target ) return true ; } } return false ; } } ; 暴力搜索第一个版本的 O ( n 2 ) O(n^{2}) O ( n 2 ) ,在第二个版本中同样借助暴力搜索我们可以将时间复杂度缩减为 O ( n ) O(n) O ( n ) : class Solution {

后缀数组(suffix array)

*爱你&永不变心* 提交于 2020-02-03 00:13:23
参考: Suffix array - Wiki 后缀数组(suffix array)详解 6.3 Suffix Arrays - 算法红宝书 Suffix Array 后缀数组 基本概念 应用 :字符串处理、生物信息序列处理 后缀 :学过英语的都知道什么叫后缀,就是从某个位置开始到字符串结尾的特殊子串,记住 Suffix(i)=S[i...len(S)-1],i就是后缀起始位置 后缀数组 :就是将后缀排序好后放到一个一维数组里,SA[i]存放排名第i大的后缀首字符下标,并且保证 Suffix(SA[i])<Suffix(SA[i+1]), 1<=i<n 。 Rank数组 :rank[i]存放suffix(i)的优先级 注:后缀数组和Rank数组为互逆运算。我们只要算出了sa数组,就可以在O(n)的时间复杂度内算出rank数组。 height数组 :height[i]保存的是suffix(i)和suffix(i-1)的最长公共前缀的长度。也就是排名相邻的两个后缀的 最长公共前缀 。 看图说话: 下面列出了aabaaaab的所有后缀,并对其标号1..8 构造Rank数组,对每个i一次计算其后缀的排名,如下第一个后缀排名第4,所以Rank数组第一个为4 怎么构造后缀数组 构造sa数组 构造rank数组 构造height数组 例子 aabaaaab 总共有n=8个后缀: 1:

numpy

浪尽此生 提交于 2020-02-02 21:43:49
ndarray自带属性 import numpy as np a = np . array ( [ [ 0 , 1 , 2 , 3 , 4 ] , [ 9 , 8 , 7 , 6 , 5 ] ] ) a . ndim a . shape a . size a . dtype a . itemsize ndarray创建方法 #ndarray数组的创建方法 #1.从python中的列表元组创建 x = np . array ( [ 0 , 1 , 2 , 3 ] ) print ( x ) x = np . array ( ( 4 , 5 , 6 , 7 ) ) print ( x ) x = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] , ( 5 , 6 ) ] ) print ( x ) #2.使用numpy中的函数创建数组 #(1) y = np . arange ( 6 ) print ( y ) y = np . ones ( ( 2 , 2 ) , dtype = np . int32 ) print ( y ) y = np . eye ( 5 ) print ( y ) #(2) #np.ones_like(a) #np.zeros_like(a) #np.full_like(a,val) #(3) a = np . linspace (

100道关于numpy的练习

↘锁芯ラ 提交于 2020-02-02 13:32:27
声明:并非原创,转自 https://github.com/rougier/numpy-100 This is a collection of exercises that have been collected in the numpy mailing list, on stack overflow and in the numpy documentation. The goal of this collection is to offer a quick reference for both old and new users but also to provide a set of exercices for those who teach. If you find an error or think you've a better way to solve some of them, feel free to open an issue at https://github.com/rougier/numpy-100 1. Import the numpy package under the name np (★☆☆) import numpy as np 2. Print the numpy version and the configuration (★☆☆) print

python中np.clip()的用法

旧巷老猫 提交于 2020-02-01 17:59:06
主要参考 python中numpy模块下的np.clip()的用法 ,稍有改动 Numpy 中clip函数的使用 numpy.clip(a, a_min, a_max, out=None) Clip (limit) the values in an array. Given an interval, values outside the interval are clipped to the interval edges. For example, if an interval of [0, 1] is specified, values smaller than 0 become 0, and values larger than 1 become 1. 一维数组 其中a是一个数组,后面两个参数分别表示最小和最大值 import numpy as np x = np . array ( [ 1 , 2 , 3 , 5 , 6 , 7 , 8 , 9 ] ) np . clip ( x , 3 , 8 ) Out [ 88 ] : array ( [ 3 , 3 , 3 , 5 , 6 , 7 , 8 , 8 ] ) 多维数组 x = np . array ( [ [ 1 , 2 , 3 , 5 , 6 , 7 , 8 , 9 ] , [ 1 , 2 , 3 , 5 , 6 , 7

剑指offer笔记// 13·调整数组顺序使奇数位于偶数前面

一曲冷凌霜 提交于 2020-02-01 17:51:22
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 归类:数组,筛选 思路 1·排除特殊情况:数组长度为0 or 不存在 if(array==null || array.length ==0) 2·(思路)需要给出初始、判断循环、终止 两个游标i,j相邻,j = i+1 i后移,i为偶数时,j右移,j指向奇数时,将j所指的数左移(j-i)次,至i的前面,然后i从j+1开始继续此循环 当j右移直到n-1没有奇数,结束循环 3.(思路)相比于每次判断偶数时交换,不如判断两个奇数中间有间隔时交换,这样可以可以对连续偶数的情况,实现快速处理。 定义三个游标:i负责遍历,j负责交换时移位,m负责存储第m个奇数的位置 每次循环执行顺序,tmp=array[i],j=i, 每次循环执行选择,当j=i>m+1时,循环移位array[j] = array[j-1],array[m] = tmp 每次循环执行顺序,m=j+1 代码实现 链接:https : / / www . nowcoder . com / questionTerminal / beb5aa231adc45b2a5dcc5b62c93f593 ? answerType = 1 & f =

numpy学习笔记(代码)

半城伤御伤魂 提交于 2020-02-01 09:42:27
import numpy as np import random #用numpy生成数组,t1,t2,t3 t1 = np . array ( [ 0 , 1 , 2 , 3 , 4 ] ) print ( t1 , '\n' ) t2 = np . array ( range ( 5 ) ) print ( t2 , '\n' ) t3 = np . arange ( 5 ) print ( t3 , '\n' ) #用numpy生成的数组的类型为<class 'numpy.ndarray'> print ( type ( t3 ) , '\n' ) #dtype显示的是数组元素的类型, # 有int(8,16,32,64),float(16,32,64,128),uint(8,16,32,64),complex(64,128),bool这么多 print ( t3 . dtype , '\n' ) """创建不同类型的数组,用dtype参数""" #float64类型 t4 = np . array ( range ( 10 ) , dtype = float ) print ( t4 ) print ( t4 . dtype , '\n' ) #为float64是因为电脑为64位 #bool类型 t5 = np . array ( [ 1 , 0 , 0 , 1 , 0 ,

LeetCode Top Interview Questions 384. Shuffle an Array (Java版; Meidum)

 ̄綄美尐妖づ 提交于 2020-01-31 14:26:29
welcome to my blog LeetCode Top Interview Questions 384. Shuffle an Array (Java版; Meidum) 题目描述 Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] nums = {1,2,3}; Solution solution = new Solution(nums); // Shuffle the array [1,2,3] and return its result. Any permutation of [1,2,3] must equally likely to be returned. solution.shuffle(); // Resets the array back to its original configuration [1,2,3]. solution.reset(); // Returns the random shuffling of array [1,2,3]. solution.shuffle(); 第一次做; 主要是弄明白下面题解中洗牌算法的本质: 如果有n张牌, 那么洗牌的结果应该是等可能的n!种

刷题--二分法(1)

大城市里の小女人 提交于 2020-01-31 07:05:25
首先是二分法的模板 1 while(left + 1 < right){ 2 int mid = (left + right) >>> 1; 3 if(array[mid] == target){ 4 //取决于实际操作 5 }else if(array[mid] > target){ 6 right = mid; 7 }else(array[mid] < target){ 8   left = mid; 9 } 10 } 这样写的好处在于, 一定可以将搜索结果限定在left和right之间。即,如果array中有target的值,它一定是left或者right,如果没有,left和right就是按序在array中插入target后距离target最近的两个值。也就是说,left和right在退出while循环后仍然保持着先后顺序。 使用这个模板的时候注意的一点是,要在while循环之后对left和rihgt进行判断,判断的依据是极端情况。下面用三个例子说明。 1 array中没有重复的值,找到target值的索引。 极端情况下,target出现在头和尾,或者没有target,但是按照排序target可以插在头位置或者尾位置。 如果存在且在头位置,那么left不会变化,在尾位置right不会变化,而且在while中不会执行if(array[mid] == target)。 同样