LeetCode
- 题目:删除有序数组中重复项
给你一个升序排列的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
- 解题思路
①首先有一个临时数组存放存放不重复的数据
②数组中的第一个数据相对他前面来说是不重复的(第一个元素前面本来就没有其他数据),所以放入到临时数组里面
③从第二个开始比较,因为数据是有序排序的,所以一个数据不等于前一个数据,那么这个数据相对它相对于前面的数据是不重复的,这个数据存到临时数组中
④最后更新原数组。
【知识点】因为Java是值传递,④中修改了nums在堆中数据,所以main方法或调用这个去重函数的方法中的nums数据也跟着变
初始状态:
④更新完数据之前:
④更新完数据之后:
- 代码
public class LeetCodePrac { public static void main(String[] args) { int[] nums = {1,1,2,3,3}; int len=removeDuplicates(nums); for(int i=0;i<len;i++) System.out.println(nums[i]); } public static int removeDuplicates(int[] nums) { int arr[]=new int[nums.length]; arr[0]=nums[0]; int index=1; for(int i=1;i<nums.length;i++) { if(nums[i]!=nums[i-1]) { arr[index]=nums[i]; index++; } } //④ for(int i=0;i<index;i++) { nums[i]=arr[i]; } return index; } }
nowcoder
- 题目:对first_name创建唯一索引uniq_idx_firstname
针对如下表actor结构创建索引:
CREATE TABLE actor ( actor_id smallint(5) NOT NULL PRIMARY KEY, first_name varchar(45) NOT NULL, last_name varchar(45) NOT NULL, last_update datetime NOT NULL);
- 解题思路
【知识点】添加索引
①CREATE INDEX
CREATE [INDEX | UNIQUE INDEX] <索引名> ON <表名>(<列名>)
②ALTER TABLE
ALTER TABLE <表名> ADD [INDEX | UNIQUE INDEX] <索引名>(<列名>);
③查看索引 :SHOW INDEX FROM <表名> [ FROM <数据库名>]
SHOW INDEX FROM <表名> [ FROM <数据库名>]
④删除索引
#对普通索引和唯一索引都起作用 DROP INDEX <索引名> ON <表名> ALTER TABLE <表名> DROP INDEX <索引名>
- 代码
CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name); CREATE INDEX idx_lastname ON actor(last_name); ALTER TABLE actor ADD UNIQUE INDEX uniq_idx_firstname(first_name); ALTER TABLE actor ADD INDEX idx_lastname(last_name);