数组与SQL-第1天

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);

猜你喜欢

转载自blog.csdn.net/weixin_46899412/article/details/123533711