LeetCode-要素の除去
1375 ワード
問題解
まず私が提出した解法で、構想が煩雑で、コードが長く、曲線が国を救う.前後のポインタを用いて,条件に合致する要素を見つけて位置を交換する.重複交換を防止するには、交換ごとのval値を修正し、INT 32 MAXに合理的に変更します.すなわち、テストケースの配列にINT 32_が含まれていないと仮定します.MAX. #include "iostream"
#include "vector"
#include "limits"
using namespace std;
class Solution {
public:
int removeElement(vector& nums, int val) {
int cnt=0;
for(int i=0;i
公式の問題解はこのタイプの提非常に巧みな高速ポインタ法を提供しており、このタイプの問題のやり方であるべきで、覚えておいてください.#include "iostream"
#include "vector"
using namespace std;
class Solution {
public:
int removeElement(vector& nums, int val) {
int i,j;
for(i=0,j=0;j
削除する要素が少ない場合、公式の問題解は、削除する要素に遍歴した場合、最後の要素と交換し、配列の長さを1つ減らし、要素を直接削除するより効率的なアルゴリズムを与えます.問題解の考え方に基づいて自分で書いてみました.#include "iostream"
#include "vector"
#include "limits"
using namespace std;
class Solution {
public:
int removeElement(vector& nums, int val) {
int n=nums.size();
int cnt=0;
for(int i=0;i
#include "iostream"
#include "vector"
#include "limits"
using namespace std;
class Solution {
public:
int removeElement(vector& nums, int val) {
int cnt=0;
for(int i=0;i
#include "iostream"
#include "vector"
using namespace std;
class Solution {
public:
int removeElement(vector& nums, int val) {
int i,j;
for(i=0,j=0;j
#include "iostream"
#include "vector"
#include "limits"
using namespace std;
class Solution {
public:
int removeElement(vector& nums, int val) {
int n=nums.size();
int cnt=0;
for(int i=0;i